diff options
author | obrien <obrien@FreeBSD.org> | 2002-01-27 12:00:11 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2002-01-27 12:00:11 +0000 |
commit | fc89183cdc6be5afa8deb7250fd15a20832ab528 (patch) | |
tree | 5c493199a70976c54e1b9c6a7804a3de85b43e84 /contrib/binutils/gas | |
parent | 94820fd8060f6f43089d1a3ddb8a482402e7e494 (diff) | |
download | FreeBSD-src-fc89183cdc6be5afa8deb7250fd15a20832ab528.zip FreeBSD-src-fc89183cdc6be5afa8deb7250fd15a20832ab528.tar.gz |
Enlist the FreeBSD-CURRENT users as testers of what is to become Binutils
version 2.12.0. These bits are taken from the FSF anoncvs repo on
27-January-2002 03:41 PST.
Diffstat (limited to 'contrib/binutils/gas')
82 files changed, 23330 insertions, 14241 deletions
diff --git a/contrib/binutils/gas/CONTRIBUTORS b/contrib/binutils/gas/CONTRIBUTORS index b3fd03e..68d11dc 100644 --- a/contrib/binutils/gas/CONTRIBUTORS +++ b/contrib/binutils/gas/CONTRIBUTORS @@ -2,7 +2,7 @@ If you've contributed to gas and your name isn't listed here, it is not meant as a slight. I just don't know about it. Email me, -raeburn@cygnus.com and I'll correct the situation. +nickc@redhat.com and I'll correct the situation. This file will eventually be deleted: The general info will go into the documentation, and info on specific files will go into an AUTHORS diff --git a/contrib/binutils/gas/ChangeLog b/contrib/binutils/gas/ChangeLog index 03a8210..10a0688 100644 --- a/contrib/binutils/gas/ChangeLog +++ b/contrib/binutils/gas/ChangeLog @@ -1,5199 +1,332 @@ -2001-10-16 Alan Modra <amodra@bigpond.net.au> +2002-01-26 Nick Clifton <nick@redhat.com> - From Andrew Pines <apines@cosmodog.com> - * config/tc-m68k.c (m68k_ip): Correct absolute jmp opcodes. + * po/fr.po: Updated version -2001-10-05 Alan Modra <amodra@bigpond.net.au> +2002-01-24 Kazu Hirata <kazu@hxi.com> - * config/tc-i386.c (parse_register): If not producing code for - x86_64, reject x86_64 register name matches. - (md_assemble): Remove now redundant check for x86_64 regs. + * config/tc-h8300.c (check_operand): Don't print a warning + when a valid 24-bit address is given to a 16-bit address + operand. -2001-09-30 Stephane Carrez <Stephane.Carrez@worldnet.fr> +2002-01-24 Alexandre Oliva <aoliva@redhat.com> - * config/tc-m68hc11.c (cmp_opcode): Define prototype. - (print_opcode_format, skip_whites): Likewise. - (convert_branch, m68hc11_new_insn): Likewise. - (build_dbranch_insn, build_indexed_byte): Likewise. - (build_reg_mode, find, find_opcode): Likewise. - (print_insn_format): Fix call to print_opcode_format. - (md_assemble): Fix call to build_dbranch_insn. + * config/tc-sh.c (sh_elf_suffix): Removed. + (sh_PIC_related_p, sh_check_fixup, sh_cons_fix_new, + sh_end_of_match, sh_parse_name): New functions. + (sh_elf_cons): Simplify. + (parse_exp): Reject misplaced PIC operands. + (md_undefined_symbol): Simplify. + (sh_fix_adjustable): Let @GOTOFF be adjusted. + (md_apply_fix3): Write @PLT and @GOTOFF addends in place. + (tc_gen_reloc): Move fixp subsy absolute value into addnumber. + Complain if subsy remains at the end. + * config/tc-sh.h (sh_parse_name, sh_cons_fix_new): Declare. + (md_parse_name, TC_CONS_FIX_NEW, O_PIC_reloc): Define. -2001-09-19 Andreas Schwab <schwab@suse.de> +2002-01-22 Alexandre Oliva <aoliva@redhat.com> - * config/tc-m68k.c: Include "dwarf2dbg.h". + * config/tc-mn10300.c (xr_registers): Move `pc'... + (other_registers): ... here. -2001-08-29 Joel Sherrill <joel@OARcorp.com> +2002-01-22 Alan Modra <amodra@bigpond.net.au> - * configure.in (i[3456]86-*-rtems*, m68*-*-rtems*): Change - default from coff to elf. - * configure: Regenerate. - -2001-08-28 Philip Blundell <philb@gnu.org> - - * configure.in (sh-*-coff*, sh-*-rtems*): Set bfd_gas to yes. - Patch from Joel Sherril <joel.sherrill@OARcorp.com> - * configure: Regenerate. - -2001-07-21 Andreas Schwab <schwab@suse.de> - - * config/tc-m68k.c (md_pseudo_table) [OBJ_ELF]: Add .file and - .loc. - (md_assemble) [OBJ_ELF]: Call dwarf2_emit_insn before emitting - insn. - * config/tc-m68k.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - -2001-07-14 matthew green <mrg@eterna.com.au> - - * configure.in (i386-*-netbsdelf*): New target. - * configure: Regenerate. - -2001-07-07 Nick Clifton <nickc@cambridge.redhat.com> - - * ecoff.c (add_file): Only set debug_type to DEBUG_NONE if it is - DEBUG_UNSPECIFIED. - -2001-06-27 Nick Clifton <nickc@cambridge.redhat.com> - - * config/tc-arm.c (do_ldst): Use MVN to build simple inverted - constants. - -2000-06-20 Tom Rix <trix@redhat.com> - - * config/tc-ppc.c (ppc_comm): Change default alignment to 4 bytes. - -2001-06-18 Philip Blundell <philb@gnu.org> - - * config/tc-arm.c (do_msr): Remove restriction on usage of - immediate operands. - -2001-06-13 Philip Blundell <philb@gnu.org> - - * config/tc-arm.c (thumb_shift): Improve wording of error message. - (do_t_arit): Likewise. - -2001-06-13 Nick Clifton <nickc@cambridge.redhat.com> - - * config/tc-sh.c (md_pseudo_table): Only intercept the .file and - .loc pseudos if the dfwarf2 functions are available. - (md_assemble): Only call dwarf2_emit_insn if it is available. - -2001-06-13 Nick Clifton <nickc@cambridge.redhat.com> - - Merge from mainline: - 2001-05-11 Nick Clifton <nickc@cambridge.redhat.com> - * config/tc-arm.c (arm_handle_align): When truncating an aligned - block, ensure that the low order bits of the alignment are - preserved. - 2001-05-06 Nick Clifton <nickc@cambridge.redhat.com> - * config/tc-arm.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. - * config/tc-arm.c (arm_handle_align): Do not insert more than - MAX_MEM_FOR_RS_ALIGN_CODE bytes. - (arm_frag_align_code): Use MAX_MEM_FOR_RS_ALIGN_CODE. - 2001-04-26 Nick Clifton <nickc@cambridge.redhat.com> - * config/tc-arm.c (arm_handle_align): New Function: Generate - no-op filled alignment frags. - (arm_frag_align_code): New Function: Create a code alignment frag. - (arm_init_frag): New Function: Initialse the target dependent - parts of a frag. - * config/tc-arm.h (TC_FRAG_TYPE): Define. - (TC_FRAG_INIT): Define. - (HANDLE_ALIGN): Define. - (md_do_align): Define. - 2001-03-12 Nick Clifton <nickc@redhat.com> - * config/tc-arm.c (md_begin): Always set machine type based on - cpu_variant. - 2001-03-06 Nick Clifton <nickc@redhat.com> - * config/tc-arm.c (md_apply_fix3): Clear bit zero of offset in - BLX(1) instruction. - -2001-06-12 Nick Clifton <nickc@cambridge.redhat.com> - - * doc/as.texinfo (Infix Ops): Document that comparison and - combiner operators can be used as infix operators. - -2001-06-12 Nick Clifton <nickc@cambridge.redhat.com> - - * config/tc-arm.c: Fix test for overlow of literal pool. - -2001-06-11 Alan Modra <amodra@bigpond.net.au> - - Merge from mainline. - 2001-06-08 Alan Modra <amodra@bigpond.net.au> - * config/tc-mips.c (mips16_mark_labels): Reduce number of calls to - S_GET_VALUE by using a temp. - (append_insn): Likewise, and for S_SET_VALUE too. - (mips_emit_delays): Likewise. - (my_getExpression): Likewise. - (md_apply_fix): Likewise. Use "valueT" rather than "long" for "value". - (mips16_extended_frag): Cater for first relaxation pass having - bogus addresses. Use relax_marker to reliably determine whether a - symbol frag has been reached on the current pass. - - 2001-06-07 H.J. Lu <hjl@gnu.org> - * configure.in: Use MIPS_STABS_ELF for Linux/mips. - * configure: Regenerate. - - 2001-06-07 H.J. Lu <hjl@gnu.org> - * config/tc-mips.c (mips_pseudo_table): Add "extern" if - MIPS_STABS_ELF is defined. - - 2001-06-06 Christian Groessler <cpg@aladdin.de> - * config/tc-z8k.c: Removed many warnings by removing unused - variables and tagging unused parameters as such. - (md_begin): Fixed a typo (","instead of ";"). - (struct ctrl_table): Add parentheses to initialize array - correctly. - (struct flag_table): Likewise. - (struct intr_table): Likewise. - (struct table): Likewise. - (check_operand): "#if 0"'ed since it doesn't seem to be used. - - 2001-06-06 Peter Jakubek <pjak@snafu.de> - * gas/config/tc-m68k.c (md_show_usage): Add all supported ColdFire - options to list (e.g. m5206e, m5307, m5407). - - 2001-06-06 Alan Modra <amodra@bigpond.net.au> - * config/tc-i386.c (md_assemble): Handle Pentium4 branch hints. - <JumpByte, JumpDword insn output>: Remove dead code. - - 2001-06-05 Nick Clifton <nickc@cambridge.redhat.com> - * symbols.c (S_SET_EXTERNAL): Do not override a section symbol's - status. - - 2001-05-27 Alan Modra <amodra@one.net.au> - * config/tc-m68k.c (md_assemble): Ensure variable part of frag is - allocated in the same chunk as the fixed part. - - 2001-05-25 Alan Modra <amodra@one.net.au> - * configure.in: Replace linuxoldld with linux*oldld. - * configure: Regenerate. - - 2000-05-24 Tom Rix <trix@redhat.com> - * config/obj-coff.c (add_lineno): xcoff allows negative line - numbers - * config/tc-ppc.c (ppc_stabx): fix generated symbol - - 2001-05-23 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> - * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add ISA_MIPS64 as 64 bit - architecture, remove erraneous ISA_MIPS32. - (md_show_usage): Add MIPS r12k support. - (mips_cpu_info_table): Add MIPS r12k support. - - 2001-05-22 Alan Modra <amodra@one.net.au> - * config/tc-m68k.c (relaxable_symbol): Only treat external symbols - as relaxable if embedded system, make weak syms non-relaxable. - Move definition.. - (tc_m68k_fix_adjustable): ..so it can be used here. - (md_apply_fix_2): Sign extend without conditional. - - 2001-05-16 Jeff Johnston <jjohnstn@redhat.com> - * cgen.c (gas_cgen_tc_gen_reloc): Changed error message when - howto entry is not found. - - 2001-05-10 Alan Modra <amodra@one.net.au> - * config/obj-vms.c (obj_crawl_symbol_chain): Don't take address of - symbol_next. - * config/tc-fr30.c (md_estimate_size_before_relax): Return size of - current variable part of frag. - * config/tc-m32r.c (md_estimate_size_before_relax): Likewise. - * config/tc-m68hc11.c (RELAX_STATE): Define. - (RELAX_LENGTH): Define. - (md_estimate_size_before_relax): Handle non-relaxable cases - separately from relaxable cases for clarity, and return correct - size for multi-pass relaxation. - * config/tc-tahoe.c (RELAX_LENGTH): Correct. - (md_estimate_size_before_relax): As for tc-m68hc11.c. - (md_convert_frag): Remove "length_code". - * config/tc-vax.c (RELAX_STATE): Define. - (RELAX_LENGTH): Define. - (md_relax_table): Add missing entry. - (md_estimate_size_before_relax): As for tc-m68hc11.c. - (md_convert_frag): Remove "length_code". - * config/tc-ns32k.c (md_estimate_size_before_relax): Simplify and - don't bother setting fr_var. Return correct size for multi-pass - relaxation. - * config/tc-h8500.c (md_convert_frag): Don't bother clearing fr_var. - (md_estimate_size_before_relax): No need to set fr_var. - * config/tc-mcore.c (md_convert_frag): Don't bother clearing fr_var. - (md_estimate_size_before_relax): No need to set fr_var. - - 2001-05-08 Andreas Schwab <schwab@suse.de> - * config/tc-m68k.c: Instead of replacing -1 by 64 in assignment to - fx_pcrel_adjust explicitly sign extend when reading it. - - 2001-05-03 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> - * Makefile.am (TARG_ENV_HFILES): Add te-hppa64.h and te-hppalinux64.h. - Run "make dep-am". + * Makefile.am: Run "make dep-am". * Makefile.in: Regenerate. - * configure.in: Remove duplicate mips-*-ecoff* entry. - * configure: Regenerate. - * config/obj-ecoff.c (obj_pseudo_table): Fix terminating entry. - (n_names): Cast away type mismatch. - (ecoff_sec_sym_ok_for_reloc): Add unused attribute. - (obj_ecoff_frob_symbol): Likewise. - * ecoff.c: (add_file): Add unused attribute. - (ecoff_directive_begin): Likewise. - (ecoff_directive_bend): Likewise. - (ecoff_directive_def): Likewise. - (ecoff_directive_dim): Likewise. - (ecoff_directive_scl): Likewise. - (ecoff_directive_size): Likewise. - (ecoff_directive_type): Likewise. - (ecoff_directive_tag): Likewise. - (ecoff_directive_val): Likewise. - (ecoff_directive_endef): Likewise. - (ecoff_directive_end): Likewise. - (ecoff_directive_ent): Likewise. - (ecoff_directive_extern): Likewise. - (ecoff_directive_file): Likewise. - (ecoff_directive_fmask): Likewise. - (ecoff_directive_frame): Likewise. - (ecoff_directive_mask): Likewise. - (ecoff_directive_loc): Likewise. - (mark_stabs): Likewise. - (ecoff_stab): Likewise. - (ecoff_frob_symbol): Cast away type mismatch. - (ecoff_padding_adjust): Likewise. - (ecoff_build_symbols): Likewise. - (ecoff_build_procs): Likewise. - (ecoff_build_aux): Likewise. - (ecoff_build_strings): Likewise. - (ecoff_build_fdr): Likewise. - (ecoff_build_debug): Likewise. - * itbl-ops.c (itbl_assemble): Variable initialization. - - 2001-04-29 Keith M Wesolowski <wesolows@foobazco.org> - * config/tc-mips.c (md_parse_option): Also accept - elf64-tradbigmips and elf64-tradlittlemips for OPTION_64. - - 2001-04-27 Sean McNeil <sean@mcneil.com> - * configure.in: Add arm-vxworks. - * configure: Regenerate. - - 2001-04-25 Nick Clifton <nickc@cambridge.redhat.com> - * config/obj-coff.c (do_linenos_for): Check to see if the filename - symbol has been initialised before extracting its symbol index. - - 2001-04-24 Christian Groessler <cpg@aladdin.de> - * config/tc-z8k.c (build_bytes): 12 and 16 bit displacements now - generate R_CALLR and R_REL16 relocations - - 2000-04-20 Jason Eckhardt <jle@redhat.com> - * config/tc-d10v.h (tc_frob_label): Update the symbol's frag - since frag_now can change after d10v_cleanup is called. - - 2001-04-12 Jason Merrill <jason_merrill@redhat.com> - * dwarf2dbg.c (process_entries): Don't optimize redundant line notes. - - 2001-04-07 Steven J. Hill <sjhill@cotw.com> - * config/tc-mips.c: Support ELF64 for traditional MIPS targets. - * Makefile.am: (TARG_ENV_HFILES): Add tc-mips.h. - * Makefile.in: Regenerated. - * configure.in: Use traditional MIPS targets for Linux/MIPS. - * configure: Regenerated. - - 2001-04-05 Alan Modra <alan@linuxcare.com.au> - * configure.in: Add h8500-*-coff and h8500-*-rtems targets. - * configure: Regenerate. - * config/tc-h8500.c (md_estimate_size_before_relax): Add missing - cases, and always return size based on current fr_subtype. - (md_begin): Move initialization of md_relax_table.. - (md_relax_table): ..to static initializer. Set rlx_length for - UNDEF_WORD_DISP cases. - * config/tc-w65.c (md_estimate_size_before_relax): Likewise. - (md_begin): Likewise. - (md_relax_table): Likewise. - * config/tc-mcore.c (md_estimate_size_before_relax): Likewise. - (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. - Set rlx_backward and rlx_forward to zero for unused states. - * config/tc-sh.c (md_estimate_size_before_relax): Likewise. - (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. - (UNCOND12, UNCOND32): Remove duplicate defines. - - 2001-03-30 Alan Modra <alan@linuxcare.com.au> - * dwarf2dbg.c (dwarf2_directive_file): Fix warnings. - - 2001-03-30 Alan Modra <alan@linuxcare.com.au> - * config/tc-sh.c (md_estimate_size_before_relax): Add extra - do-nothing cases to switch to avoid abort on a second relaxation - pass, and tidy code a little. - * config/tc-h8500.c (md_estimate_size_before_relax): Likewise. - * config/tc-w65.c (md_estimate_size_before_relax): Likewise. - * config/tc-mcore.c (COND12, UNCD12): Rename to DISP12 throughout. - (COND32, UNCD32): Rename to DISP32 throughout. - (UNDEF_WORD_DISP): Renumber to 3. - (md_estimate_size_before_relax): Add extra do-nothing cases. - * config/tc-mn10200.c (md_estimate_size_before_relax): Rewrite. - * config/tc-ns32k.c (md_estimate_size_before_relax): Add cases to - handle word and dword branches. - - 2001-03-17 Alan Modra <alan@linuxcare.com.au> - * read.c (do_org): Handle complex expressions. - * cgen.c (gas_cgen_finish_insn): Likewise. - - 2001-03-15 Alexandre Oliva <aoliva@redhat.com> - * config/tc-sh.c (parse_reg): Match capital MACH and MACL. - - 2001-03-06 Igor Shevlyakov <igor@windriver.com> - * config/tc-m68k.c : Add 5407 to archs[] table. - (HAVE_LONG_BRANCH): Add mcf5407. - (select_control_regs): Recognize 5407. - - 2001-03-02 Richard Sandiford <rsandifo@redhat.com> - * config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): New macro. - (gen_to_words): Print warnings if NaNs are found and the target CPU - does not support them. Allow largest exponent to be used in normal - numbers if TC_LARGEST_EXPONENT_IS_NORMAL evaluates to true. - - 2001-02-27 Alan Modra <alan@linuxcare.com.au> - * configure.in (BFD_VERSION): New. - (AM_INIT_AUTOMAKE): Use $BFD_VERSION. - * configure: Regenerate. - - 2001-02-26 Mark Elbrecht <snowball3@bigfoot.com> - * config/obj-coff.c [BFD_ASSEMBLER] (obj_coff_section): Set - SEC_NEVER_LOAD when the 'n' flag is used. - Add SEC_NEVER_LOAD to matchflags. - - 2001-02-24 Stephane Carrez <Stephane.Carrez@worldnet.fr> - * symbols.c (decode_local_label_name): Initialize message_format - only when an error is reported (perf pb due to I18N). - - 2001-02-23 H.J. Lu <hjl@gnu.org> - * dwarf2dbg.c (dwarf2_directive_file): Call s_app_file (0) if - BFD_ASSEMBLER is not defined. - - 2001-02-16 matthew green <mrg@redhat.com> - * cgen.c (gas_cgen_md_apply_fix3): Support BFD_RELOC_64. - - 2001-02-11 Maciej W. Rozycki <macro@ds2.pg.gda.pl> - * config/tc-mips.c (macro): For M_LA_AB emit a - BFD_RELOC_MIPS_CALL16 relocation or a - BFD_RELOC_MIPS_CALL_HI16/BFD_RELOC_MIPS_CALL_LO16 pair instead of - BFD_RELOC_MIPS_GOT16 and - BFD_RELOC_MIPS_GOT_HI16/BFD_RELOC_MIPS_GOT_LO16, respectively for - loading the jump register when generating SVR4_PIC code. - - 2001-02-10 Chris Demetriou <cgd@broadcom.com> - * configure.in: Make 'mipself' and 'mipsecoff' emulations - map to MIPS-specific files, as they used to do before the - change on 2000-05-21. - * configure: Regerate. - - 2001-02-10 Chris Demetriou <cgd@broadcom.com> - * config/tc-mips.c (md_parse_option): Don't try to compile - ELF-only option code if not ELF. - -2001-06-10 Philip Blundell <philb@gnu.org> - - * configure.in: Set version to 2.11.1. - * configure: Regenerate. - -2001-06-07 Alan Modra <amodra@bigpond.net.au> - - * Most files: Update copyright notices. - -2001-06-06 Hans-Peter Nilsson <hp@axis.com> - - * config/tc-cris.c (cris_insn_first_word_frag): New. - (md_assemble): Call cris_insn_first_word_frag to get the first - frag in an insn, not frag_more. Don't call dwarf2_emit_insn at - end. Drop variable insn_size. - (gen_bdap): Call cris_insn_first_word_frag, not frag_more. - -2001-06-06 Nick Clifton <nickc@cambridge.redhat.com> - - * as.c (show_usage): Remove L from listing options. It is not a - generic option. - -2001-06-06 Tracy Kuhrt <Tracy.Kuhrt@microchip.com> - - * as.c (parse_args): Correct option name "listing-lhs-width2". - -2001-05-30 Richard Henderson <rth@redhat.com> - - * read.c (emit_leb128_expr): Call md_cons_align. - -2001-05-28 Jeff Sturm <jsturm@one-point.com> - - * config/tc-sparc.c (md_apply_fix3): Handle BFD_RELOC_SPARC_UA16, - BFD_RELOC_SPARC_UA32 and BFD_RELOC_SPARC_UA64. - (tc_gen_reloc): Likewise. - (sparc_cons_align): Don't clear sparc_no_align_cons. - (cons_fix_new_sparc): Substitute BFD_RELOC_SPARC_UA{16|32|64} for - BFD_RELOC_{16|32|64} iff sparc_no_align_cons is set. - -2001-05-23 Alan Modra <amodra@one.net.au> - - Merge from mainline. - 2001-05-22 Alan Modra <amodra@one.net.au> - * config/tc-arc.c (md_assemble): Use is_end_of_line instead of - testing for NULs. - - 2001-05-16 Alan Modra <amodra@one.net.au> - * config/tc-arc.c (md_assemble): Correct dwarf2_emit_insn param - for 8 byte insns. - * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn before - opcodes are output rather than after. Delete insn_size. - * config/tc-v850.c (md_assemble): Similarly, but delete - total_insn_size. Update copyright. - - 2001-05-03 Alan Modra <amodra@one.net.au> - * config/tc-i386.c (i386_displacement): Call as_bad for bad GOTOFF - expressions rather than triggering an assert. - - 2001-03-30 Alan Modra <alan@linuxcare.com.au> - * config/tc-i386.c (UNCOND_JUMP, COND_JUMP, COND_JUMP86): Decrement. - (md_relax_table): Remove first four unused entries. Increment - rlx_length by one throughout table, and update comments to suit. - (md_estimate_size_before_relax): Return size of current variable - part of frag to reflect reality when relaxing more than once. - - 2001-03-25 Alan Modra <alan@linuxcare.com.au> - * config/tc-i386.c (i386_scale): Accept an absolute expression for - scale factor, and return the end of the expression. - (i386_operand): Modify for above. - - 2001-03-13 Alan Modra <alan@linuxcare.com.au> - * config/tc-i386.c (RELOC_ENUM): Define. Use throughout file. - (NUM_FLAG_CODE): Define. - (lex_got): New function. - (got_reloc): New global var. - (x86_cons_fix_new): New function. - (x86_cons): New function. - (i386_immediate): Use lex_got here, replacing inline code. Change - "ignoring junk.." error message to "junk.." - (i386_displacement): Likewise. - * config/tc-i386.h (TC_PARSE_CONS_EXPRESSION): Define. - (x86_cons): Declare. - (TC_CONS_FIX_NEW): Define. - (x86_cons_fix_new): Declare. - - 2001-03-07 Alan Modra <alan@linuxcare.com.au> - * config/tc-i386.c (struct _i386_insn): Rename disp_reloc to reloc. - (md_assemble) <smallest displacement>: Use correct field of i.op[] - union. - <JumpInterSegment output>: Use correct i.disp_reloc[]. - <immediate output>: Likewise. - - 2001-02-13 Alan Modra <alan@linuxcare.com.au> - * doc/c-i386.texi (i386-Arch): Add "jumps"/"nojumps" blurb. - Mention effect of < 386 architectures on jump promotion. - (i386-Jumps): xref above. Don't assume long disp is 32 bits. - - * config/tc-i386.c (no_cond_jump_promotion): New. - (set_cpu_arch): Parse "jumps" arch modifier. - (insn_size): Modify usage comment. - (ENCODE_RELAX_STATE): Reformat and protect macro arg. - (SIZE_FROM_RELAX_STATE): Rename to DISP_SIZE_FROM_RELAX_STATE. - (TYPE_FROM_RELAX_STATE): New define. - (UNCOND_JUMP, COND_JUMP): Renumber. - (md_relax_table): Reorder to suit. - (COND_JUMP86): New define. - (md_relax_table): Handle COND_JUMP86 cases. Add a few comments. - (md_assemble): Create frag var for jumps of max size, encode relax - state for COND_JUMP86. - (md_estimate_size_before_relax): Handle COND_JUMP86 cases, and - leave conditional jumps small if no_cond_jump_promotion. - (md_convert_frag): Likewise. - - 2001-05-10 Alan Modra <amodra@one.net.au> - * config/tc-v850.c (md_estimate_size_before_relax): Rewrite. - (md_convert_frag): Don't bother clearing fr_var. - (md_pseudo_table): Correct initialization. - - 2001-05-12 Peter Targett <peter.targett@arccores.com> - * config/tc-arc.c: Update copyright and tidy source comments. - (md_pseudo_table): Add directive .cpu back as an alias for - .option. Add .file and .line for dwarf2 support. - (arc_mach_type): Make bfd_mach_arc_6 default. - (md_longopts): Add entry 'pre-v6' representing old command line - option when assembling for 'arc5' core versions. - (md_parse_option): Make OPTION_ARC same as OPTION_ARC6, for new - default behaviour. - (arc_code_symbol): Make symbol value for @h30 fixup expression - equal to O_constant. - (md_assemble): Call dwarf2_emit_insn. - Include "dwarf2dbg2.h". Formatting fixes throughout file. - * config/tc-arc.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - * doc/c-arc.texi (ARC_CORE_DEFAULT): Update to new default. - - 2001-05-15 Alexandre Oliva <aoliva@redhat.com> - * config/tc-mn10300.c (mn10300_force_relocation): Don't - optimize differences between symbols in code sections to - constants. - (mn10300_fix_adjustable): Don't adjust to section+offset - relocations pointing at symbols in code sections. - - 2001-05-14 Alexandre Oliva <aoliva@redhat.com> - * config/tc-mn10300.c (md_assemble): Anchor dwarf2 line info - before a relaxable insns. - - 2001-05-13 Alexandre Oliva <aoliva@redhat.com> - * config/tc-mn10300.c (tc_gen_reloc): Don't reject differences - between symbols if the base symbol is in the current section; - emit a PC-relative relocation instead. - - 2001-05-09 Alexandre Oliva <aoliva@redhat.com> - * config/tc-mn10300.c (md_apply_fix3): Accept PC-relative relocs. - - 2001-05-06 Alexandre Oliva <aoliva@redhat.com> - * config/tc-mn10300.c (md_assemble): Subtract operand->shift - from offset in non-pcrel operands too. - - 2001-04-14 Alexandre Oliva <aoliva@redhat.com> - * config/tc-mn10300.c (md_assemble): Simplify offset adjustment of - pc-relative relocations not placed at the end of the instruction. - - 2001-04-06 Alexandre Oliva <aoliva@redhat.com> - * config/tc-mn10300.c (xr_registers): Added `pc'. - - 2001-03-30 Alan Modra <alan@linuxcare.com.au> - * config/tc-mn10300.c (md_estimate_size_before_relax): Rewrite. - - 2001-02-23 Richard Sandiford <rsandifo@redhat.com> - * config/tc-mn10300.c (md_apply_fix3): Don't mark a fixup as - done if it's against a symbol. - - 2001-03-28 H.J. Lu <hjl@gnu.org> - * read.c (equals): Set to local for COFF only if it hasn't been - defined before. - - 2001-03-27 Nick Papadonis <nick@coelacanth.com> - * read.c (equals): (for COFF) default symbols to being local. - - 2001-03-23 Richard Sandiford <rsandifo@redhat.com> - * write.c (fix_new_exp): Print an error if passed a register. - - 2001-03-20 Alan Modra <alan@linuxcare.com.au> - * frags.h (struct frag): Add relax_marker. - * write.c (is_dnrange): Delete. - (relax_frag): Use correct types for `aim', `target', `address'. - Delete `offset', `was_address'. Test `relax_marker' instead of - using fragile (and slow) address test. - (relax_segment): Init and flip `relax_marker'. - - 2001-02-13 Ian Lance Taylor <ian@zembu.com> - * write.c (is_dnrange): Stop as soon as the address becomes - larger. - (relax_frag): Add segment parameter. Only call symbol_get_frag - once. Only call is_dnrange if the symbol is in the same segment, - and the symbol address is larger. - (relax_segment): Pass segment to md_relax_frag and relax_frag. - * write.h (relax_frag): Update declaration. - * config/tc-fr30.c (fr30_relax_frag): Add segment parameter. Pass - it to relax_frag. - * config/tc-m32r.c (m32r_relax_frag): Likewise. - * config/tc-m32r.h (md_relax_frag): Add segment parameter. - (m32r_relax_frag): Update declaration. - * config/tc-mips.h (md_relax_frag): Add segment parameter. - * config/tc-tic54x.h (md_relax_frag): Likewise. - * doc/internals.texi (CPU backend): Update documentation for - md_relax_frag. - - 2001-03-15 DJ Delorie <dj@redhat.com> - * stabs.c (s_stab_generic): Don't corrupt the notes obstack by - blindly freeing string if it isn't at the top of the obstack. - -2001-05-14 Richard Henderson <rth@redhat.com> - - * ehopt.c (eh_frame_convert_frag): Fix missed subtype adjustment - last change. - -2001-05-14 Richard Henderson <rth@redhat.com> - - * ehopt.c (get_cie_info): Rename from eh_frame_code_alignment; - also collect whether to expect an FDE augmentation. - (check_eh_frame): Rewrite as a state machine. Track where in - an FDE we are located, skip any augmentation. - (eh_frame_estimate_size_before_relax): Get code alignment from - the fragment subtype. - (eh_frame_relax_frag, eh_frame_convert_frag): Likewise. - * read.c (emit_leb128_expr): Call check_eh_frame. - -2001-05-09 Richard Henderson <rth@redhat.com> - - * config/tc-ia64.c (generate_unwind_image): Align the fragment - beginning a function's unwind info block. - -2001-04-27 David Mosberger <davidm@hpl.hp.com> - - * config/tc-ia64.c (dot_spillmem_p): Fix output_spill_?sprel_p() - argument passing order: predicate goes last, not first. - -2001-04-16 David O'Brien <obrien@FreeBSD.org> - - * configure.in: Add the em type for FreeBSD targets. - * configure: Regenerate. - -2001-04-13 Jim Wilson <wilson@redhat.com> - - * tc-ia64.c (is_conditional_branch): Return true for br, brl, and br. - excluding br.i. - -2001-04-02 Philip Blundell <philb@gnu.org> - - From 2001-03-17 Richard Henderson <rth@redhat.com> - * dwarf2dbg.c (user_filenum, user_filenum_allocated): Remove. - (dwarf2_directive_loc): Don't use them. - (dwarf2_directive_file): Reject duplicate file definitions. - (get_filenum): Zero allocated memory. - (out_file_list): Complain about missing file definitions. - -2001-03-31 Alan Modra <alan@linuxcare.com.au> - - * listing.c (listing_listing): Enable listing on EDICT_NOLIST_NEXT - for one line if not already enabled. - * cond.c (s_elseif): Correct conditional assembly listing. - (s_else): Likewise. - - * cond.c (s_endif): Correct handling of "if .. elseif .." trees. - Don't abort on NULL current_cframe. - -2001-03-30 Richard Henderson <rth@redhat.com> - - * write.c (relax_seg, size_seg): Split from relax_and_size_seg. - (write_object_file): Relax code then data, then size sections. - - * config/tc-i386.c (md_convert_frag): Don't die on local symbols - that have been finalized. - -2001-03-28 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (DEFAULT_LEVEL): Define. - (md_begin): Use it when setting default architecture. - -2001-03-27 Hans-Peter Nilsson <hp@axis.com> - - * configure.in (cris-*-*): Change default emulation to criself. - (cris-*-*aout*): New rule. - * configure: Regenerate. - -2001-03-19 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (md_assemble <REGISTER_WARNINGS>): Correct - used register name. - -2001-03-18 Stephane Carrez <Stephane.Carrez@worldnet.fr> - - * config/tc-m68hc11.c (md_pseudo_table): Recognize xrefb to comply - with 'Motorola specification for assembly language input standard'. - -2001-03-18 Dave Brolley <brolley@redhat.com> - - * config/tc-m32r.c (expand_debug_syms): Call frag_align_code rather - than m32r_do_align. - -2001-03-16 Philip Blundell <philb@gnu.org> - - * configure: Regenerate. - -2001-03-15 David Mosberger <davidm@hpl.hp.com> - - * config/tc-ia64.c (md): New member keep_pending_output. - (ia64_flush_pending_output): Flush only if md.keep_pending_output - is not set. - (dot_xdata): Turn on md.keep_pending_output for the duration of - this function. - (dot_xfloat_cons): Ditto. - (dot_xstringer): Ditto. - (dot_xdata_ua): Ditto. - (dot_xfloat_cons_ua): Ditto. - -2001-03-15 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.c (ia64_unrecognized_line, case '['): Add local - label support. - -2001-03-11 Philip Blundell <philb@gnu.org> - - * configure.in: Set version to 2.11. - -2001-02-28 Andreas Jaeger <aj@suse.de>, Bo Thorsen <bo@suse.de> - - * config/tc-i386.c (tc_gen_reloc): Remove ugly hack which is not needed - anymore since we use bfd_elf_generic_reloc now. - (md_apply_fix3): Only apply hack for partial_inplace if not using RELA. - -2001-02-21 David Mosberger <davidm@hpl.hp.com> - - * config/tc-ia64.c (enum operand_match_result): New type. - (operand_match): Change return type to operand_match_result. - Fix all returns appropriately, adding support for returning the - out-of-range result. - (parse_operands): New locals result, error_pos, out_of_range_pos, - curr_out_of_range_pos. Rewrite operand matching loop to give better - error messages. - -2001-02-21 David Mosberger <davidm@hpl.hp.com> - - * config/tc-ia64.c (struct unwind): Add member "prologue_count". - (dot_proc): Clear unwind.prologue_count to zero. - (dot_prologue): Increment unwind.prologue_count. - (dot_restore): If second operand is omitted, use - unwind.prologue_count -1 for "ecount" (# of additional regions to - pop). Decrement unwind.prologue_count by number of regions - popped. + * gas/po/POTFILES.in: Regenerate. -2001-02-20 Bo Thorsen <bo@suse.de> +2002-01-21 DJ Delorie <dj@redhat.com> - * config/tc-i386.c (tc_i386_fix_adjustable): Fix GOTPCREL GOT - entry. + * config/obj-coff.c (obj_coff_init_stab_section): Make the + stabstr_name allocation permanent, as it will be referenced from + the section hash. -2001-02-18 David O'Brien <obrien@FreeBSD.org> +2002-01-21 Jason Thorpe <thorpej@wasabisystems.com> - * configure.in (cpu_type, arch): Add a generic FreeBSD specification as - all FreeBSD platforms should look the same at this level. - * configure: Rebuilt. - * config/tc-i386.c: Add support for old FreeBSD a.out hosts. + * configure.in (ia64-*-netbsd*): New target. + * configure: Regenerate. -2001-02-14 Philip Blundell <pb@futuretv.com> +2002-01-21 Hans-Peter Nilsson <hp@bitrange.com> - From 2001-02-06 H.J. Lu <hjl@gnu.org> - * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Do fixup if - there is no relocation. + * doc/as.texinfo (Overview) <Target ARM options>: Add missing {} + to @dots call. + <Detailed description, ARM options>: Ditto. + * doc/c-arm.texi (ARM Options): Ditto. - From 2001-02-06 H.J. Lu <hjl@gnu.org> - * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): New. Defined. - * config/tc-ia64.c (md_parse_option): Only accept the valid - ia64 options on "-axxx". +2002-01-18 Richard Earnshaw <rearnsha@arm.com> -2001-02-13 Alan Modra <alan@linuxcare.com.au> + * tc-arm.c (do_xsc_mia, do_xsc_mar, do_xsc_mra): Renamed from + do_mia, do_mar and do_mra respectively. + (do_mav_*): Renamed from do_c_*. + (mav_reg_required_here, mav_parse_offset): Renamed from + cirrus_reg_required_here and cirrus_parse_offset respectively. + (MAV_MODE?): Renamed from CIRRUS_MODE?. - * expr.c (operator): Don't bump input_line_pointer for two char - operators. Instead return operator size via new param num_chars. - (expr): Use above to parse multi-char operators correctly. +2002-01-18 Richard Earnshaw <rearnsha@arm.com> + Keith Walker <keith.walker@arm.com> -2001-02-12 Philip Blundell <pb@futuretv.com> + * tc-arm.c (ARM_EXT_V5J, ARM_ARCH_V5TEJ): Define. + (insns): Add pattern for bxj instruction. + (do_bxj): New function. + (arm_cpus): Add arm926ej. + (arm_archs): Add armv5tej. - * config/tc-arm.c (do_ldst): Improve warnings for unpredictable - ldrt/strt instructions. +2002-01-18 Richard Earnshaw <rearnsha@arm.com> -Mon Feb 12 17:44:08 CET 2001 Jan Hubicka <jh@suse.cz> + * doc/c-arm.texi: Add new fpe options to list of supported flags. - * tc-i386.c (i386_displacement): Fix handling of - BFD_RELOC_X86_64_GOTPCREL. - (i386_validate_fix): Likewise. +2002-01-19 Keith Walker <keith.walker@arm.com> -2001-02-09 David Mosberger <davidm@hpl.hp.com> + * tc-arm.c (arm_fpus): Add fpe2 and fpe3. - * config/tc-ia64.h (md_elf_section_type): New macro. - (ELF_TC_SPECIAL_SECTIONS): Drop .IA_64.unwind and .IA_64.unwind_info - (they're now handled via ia64_elf_section_type. +2002-01-18 Richard Earnshaw <rearnsha@arm.com> - * config/tc-ia64.c (unwind): New members saved_text_seg, - saved_text_subseg, and force_unwind_entry. - (optimize_unw_records): New function to optimize away unnecessary - unwind directives. - (ia64_elf_section_type): New function. - (output_unw_records): Generate unwind info only if the size is - non-zero or if it's forced for some other reason (e.g., - handlerdata or a personality routine). - (generate_unwind_image): Don't switch back to previous - section---stay inside the unwind info section instead so that - handlerdata that may follow goes into the right place. - (dot_handlerdata): Force generation of unwind entry and save the - current active text segment before generating unwind image. - (dot_unwentry): Force generation of unwind entry. - (dot_personality): Ditto. - (dot_endp): Generate unwind table entry only if there is - some unwind info or the unwind entry was forced. + * NEWS: Mention new ARM command-line options and VFP support. - * config/tc-ia64.c (make_unw_section_name): New macro to form - unwind section name. - (generate_unwind_image): Add "text_name" argument. Use it to - form unwind section name. - (dot_handlerdata): Determine current segment (section) name and - pass it to generate_unwind_image(). - (dot_endp): Determine current segment (section) name and use - it to determine the appropriate unwind section name. - (ia64_md_do_align): Add missing ATTRIBUTE_UNUSED declarations to - n, fill, and max arguments. + * config/tc-arm.c (ARM_CEXT_XSCALE): Replaces ARM_EXT_XSCALE. All + uses changed. + (ARM_CEXT_MAVERICK): Similarly. + (ARM_ANY): Now means any core instruction. + (CPU_DEFAULT): Default to ARM_ANY. + (uses_apcs_26, atcps, support_interwork, uses_apcs_float) + (pic_code): Declare for all object types. Make type int. + (legacy_cpu, legacy_fpu, mcpu_cpu_opt, mcpu_fpu_opt, march_cpu_opt) + (march_fpu_opt, mfpu_opt): Declare. + (md_longopts): Tidy up conditional definitions. + (arm_opts, arm_cpus, arm_archs, arm_fpus, arm_extensions) + (arm_long_opts): New tables. + (arm_parse_cpu, arm_parse_arch, arm_parse_fpu): New functions. + (arm_parse_extension): New function. + (md_parse_option): Rewrite using new table-driven system. + (md_show_usage): Use new table-driven system. + (md_begin): Calculate cpu_variant from command line option data. + * doc/as.texinfo (ARM ISA options): Docuement new ARM-specific + command-line options. + * doc/c-arm.texi: Likewise. -2001-02-09 Alexandre Oliva <aoliva@redhat.com> +2002-01-18 Andreas Jaeger <aj@suse.de> - * config/tc-sh.c (md_pseudo_table): Add uaquad. Use s_uacons for - 2byte, 4byte and 8byte. + * as.c (parse_args): Update year. -2001-02-08 Alan Modra <alan@linuxcare.com.au> +2002-01-17 Timothy Wall <twall@alum.mit.edu> - * config/tc-hppa.c (pa_build_unwind_subspace): Don't call - md_number_to_chars with size > sizeof (valueT). + * config/tc-tic54x.c (encode_address): Add a more informative + warning about incorrect syntax. -2001-02-05 Jim Wilson <wilson@redhat.com> +2002-01-17 Nick Clifton <nickc@cambridge.redhat.com> - * config/tc-ia64.c (errata_nop_necessary_p): Return 0 instead of - aborting for invalid operands. - -2001-02-06 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (fix_new_hppa): Pass in unwind directly rather - than via pointer. Update all callers. - (UNWIND_LOW32): Define. - (UNWIND_HIGH32): Define. - (pa_build_unwind_subspace): Use the above macros instead of dumping - bitfields directly. Call frag_more once rather than multiple times. - (md_assemble): Use UNWIND_LOW32. - (pa_entry): Likewise - (pa_procend): Likewise. - (process_exit): Use UNWIND_HIGH32. - -2001-02-04 Stephane Carrez <Stephane.Carrez@worldnet.fr> - - * config/tc-m68hc11.h (LISTING_HEADER): Use m68hc11_listing_header - function to select the header according to the cpu. - (md_after_pass_hook, md_do_align): Remove. - (md_cleanup, m68hc11_cleanup): Remove. - (md_pcrel_from_section): Declare. - * config/tc-m68hc11.c (build_dbranch_insn): Remove insn_size. - (build_jump_insn, build_insn): Likewise. - (m68hc11_listing_header): New function. - (m68hc11_cleanup): Remove. - -2001-02-02 Stephane Carrez <Stephane.Carrez@worldnet.fr> - - * config/tc-m68hc11.c (relaxable_symbol): Relax externally visible - symbols because there is no support for shared libraries and these - symbols can't be overridden (unless they are weak). - -2001-02-01 Momchil Velikov <velco@fadata.bg> - - * dwarf2dbg.c (out_debug_abbrev): Terminate the abbreviations - for the compilation unit with a zero byte. - -2001-01-30 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (pa_ip): Support 12 bit branches to absolute - destinations. Correct range check for 17 and 22 bit branches. - -2001-01-25 Nick Clifton <nickc@redhat.com> - - * config/tc-m68k.c (tc_gen_reloc): Do not abort if tcbit is - still set. Issue an error message instead. - (md_estimate_size_before_relax): Delete unused variable - 'buffer_address'. Fixup parentheses around if statement. - -2001-01-23 Kazu Hirata <kazu@hxi.com> - - * as.c: Fix formatting. - * ehopt.c: Likewise. - * messages.c: Likewise. - * stabs.c: Likewise. - * symbols.c: Likewise. - -2001-01-23 Ben Elliston <bje@redhat.com> - - * config/tc-m32r.c (m32r_handle_align): Declare type of fragp. - -2001-01-22 Kazu Hirata <kazu@hxi.com> - - * config/tc-alpha.c: Fix formatting. - -2001-01-19 Kazu Hirata <kazu@hxi.com> - - * config/tc-alpha.c: Fix formatting. - -2001-01-18 Kazu Hirata <kazu@hxi.com> - - * config/tc-alpha.c: Fix formatting. - -2001-01-18 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c (ldm_flags): Remove redundant bit from "fa" and - "da" flags. - (stm_flags): Remove redundant bit from "ed" and "da" flags. - -2001-01-18 Alexandre Oliva <aoliva@redhat.com> - - * configure.in (cpu_type, arch): Match i386 too. - * configure: Rebuilt. - -2001-01-16 Kazu Hirata <kazu@hxi.com> - - * config/tc-i386.c: Fix formatting. - -2001-01-16 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (tc_gen_reloc): Use SEGREL32 instead of DIR32 - relocs for .PARISC.unwind section. - - * config/tc-hppa.c (pa_build_unwind_subspace): Build unwind - depending on section flags, not just for .text. - -2001-01-15 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.c (ia64_flush_insns): Handle unwind directives - not immediately followed by an instruction. - -2001-01-15 Kazu Hirata <kazu@hxi.com> - - * config/tc-m68hc11.c: Fix formatting. - -2001-01-15 Nick Clifton <nickc@redhat.com> - - * symbols.c (colon): Change 'already defined symbol' from a - fatal error to an ordinary error. There is no reason why this - error should be fatal. - - * message.c (as_fatal): Delete output file, if one has been - created. - -2001-01-14 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.h (TARGET_FORMAT): Add hppa-linux variants. - -2001-01-14 Kazu Hirata <kazu@hxi.com> - - * config/tc-alpha.c: Fix formatting. - * config/tc-arc.c: Likewise. - * config/tc-arc.h: Likewise. - * config/tc-d10v.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - - * config/tc-arc.c: Fix formatting. - - * config/tc-arc.c: Fix formatting. - -2001-01-14 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (pa_build_unwind_subspace): Use SEGREL32 for - both 32 and 64 bit ELF. - - * config/tc-hppa.c (pa_ip): Store `a' flag in bit zero of operand - and don't bother storing `m' for "ce" completer. Tidy handling of - 'J' and 'K' operands to suit. Handle '<' and '>' operands. - -Sun Jan 14 00:36:42 MET 2001 Jan Hubicka <jh@suse.cz> - - * tc-i386.h (TARGET_MACH): New macro. - (i386_mach): Declare. - * tc-i386.c (i386_mach): New function. - -2001-01-13 Philip Blundell <philb@gnu.org> - - * doc/as.texinfo: Fix spelling and cross-references. - - * doc/c-arm.texi: Fix typos. Say that `;' is a line separator - character for all systems, not just GNU/Linux. Make it explicit - that `-k' doesn't affect code generation, just ELF flags. - -Sat Jan 13 01:47:35 MET 2001 Jan Hubicka <jh@suse.cz> - - * config/tc-i386.c (md_assemble): Check cpu_flags even for nullary - instructions. - -2001-01-12 Frank Ch. Eigler <fche@redhat.com> - - * cgen.c (gas_cgen_finish_insn): Call dwarf2_emit_insn. - -2001-01-12 Nick Clifton <nickc@redhat.com> - - * as.c (print_args): Update copyright date to 2001. - -2001-01-12 Peter Targett <peter.targett@arccores.com> - - * doc/c-arc.texi: New file. - Some sections to be expanded. - -2001-01-12 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (md_longopts): Recognize "--64" only for ELF. - (md_parse_option): Always accept "--32". - -2001-01-11 Peter Targett <peter.targett@arccores.com> - - * as.h (TC_ARC): Ensure struc-symbol.h included. - * as.c (dwarf2dbg.h): Include to remove implicit declaration - warnings. - * struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Define. - (TARGET_SYMBOL_FIELDS) added. - - * doc/Makefile.am (CPU_DOCS): Added c-arc.texi. - * doc/c-arc.texi: New file. - Some sections to be expanded. - * doc/as.texinfo: Update command-line options. - Removed outdated text for ARC dependant features, instead include - text from above file. - - * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Define local flag. - (TARGET_SYMBOL_FIELDS): Alias to previous definition. - (targ-cpu.h) header. - * config/tc-arc.h: - * config/tc-arc.c: New updated configuration for - ARC, including selection of core variants, and extensibility of - instructions, registers etc. through directives. - - * config/tc-arc.c (arc_extinst): Minor corrections for - error messages. - (arc_common) Likewise. Make alignment argument optional for local - symbols also, with default of zero. - -2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr> - - * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix - STATE_INDEXED_OFFSET when the symbol is undefined (16-bit offset). - (build_indexed_byte): Don't relax indexed byte, use 16-bit offset - and fix_new_exp() instead. - (md_convert_frag): For indexed post byte use the symbol value - rather than the displacement. - (md_relax_table): Fix indexed offset relax. - -2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr> - - * config/tc-m68hc11.c (md_estimate_size_before_relax):Don't - relax weak symbols. - (relaxable_symbol): New function. - -2001-01-11 Andreas Jaeger <aj@suse.de> - - * config/tc-i386.h (TC_RELOC_GLOBAL_OFFSET_TABLE): Removed, it's - not used anywhere. - -2001-01-10 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c (arm_fix_adjustable): Define for OBJ_COFF. - * config/tc-arm.h (obj_fix_adjustable): Define for OBJ_COFF - -2001-01-10 Nick Clifton <nickc@redhat.com> - - * symbols.c (DOLLAR_LABEL_CHAR): New constant - the magic - character used to dollar local symbols. - (LOCAL_LABEL_CHAR): New constant - the magic character used to - local label symbols. - (dollar_label_name): Use DOLLAR_LABEL_CHAR. - (fb_label_name): Prefix local labels with LOCAL_LABEL_PREFIX, - if defined. - Use LOCAL_LABEL_CHAR. - (decode_local_label_name): Skip LOCAL_LABEL_PREFIX. - Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. - (S_IS_LOCAL): Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. - -2001-01-08 Bo Thorsen <bo@suse.de> - - * config/tc-i386.c (i386_immediate, i386_displacement): - GOTPCREL check fix. - -2001-01-07 Ian Lance Taylor <ian@zembu.com> - - * doc/c-i386.texi (i386-Arch): Remove spaces incorrectly inserted - in last change. - -2001-01-07 Philip Blundell <philb@gnu.org> - - * doc/as.texinfo (Bug Reporting): Update email address for - reports. - * README: Likewise. - -Sat Jan 6 13:33:10 MET 2001 Jan Hubicka <jh@suse.cz> - - * configure.in: Define DEFAULT_ARCH for i386. - * tc-i386.c (md_assemble): Return after the error message; - move testing for 64bit operands to proper place. - -2001-01-06 Jan Hubicka <jh@suse.cz>, Andreas Jaeger <aj@suse.de> - - * doc/as.texinfo: Document '#' as comment character for i386 and - x86_64. Add AMD x86-64 into menu of machine dependent information. - - * doc/c-i386.texi: Document x86_64 extensions. - -Fri Jan 5 13:26:42 MET 2001 Jan Hubicka <jh@suse.cz> - - * tc-i386.c (md_assemble): Handle third byte of the opcode as prefix. - -Thu Jan 4 22:25:26 MET 2001 Jan Hubicka <jh@suse.cz> - - * tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry. - * NEWS: Add note about Pentium4 support. - -Wed Jan 3 17:26:32 MET 2001 Jan Hubicka <jh@suse.cz> - - * tc-i387.c (pi, pte, pt): Update. - (type_names): Add new types. - -Wed Jan 3 16:26:52 MET 2001 Jan Hubicka <jh@suse.cz> - - * tc-i386.h (CpuK6, CpuAthlon, CpuSledgehammer, CpuMMX, Cpu3dnow, - CpuUnknown): Renumber - (CpuP4, CpuSSE2): New. - (CpuUnknownFlags): Add CpuP4 and CpuSSE2 - -2001-01-03 Philip Blundell <pb@futuretv.com> - - * config/tc-alpha.c (alpha_force_relocation): Handle vtable - relocs. - (alpha_fix_adjustable): Likewise. - (md_apply_fix): Likewise. - -2000-12-31 H.J. Lu <hjl@gnu.org> - - * listing.c (listing_message): Allocate string only if it is - used. - - * configure: Rebuild. - -2000-12-31 Hans-Peter Nilsson <hp@bitrange.com> - - * doc/internals.texi (Relaxing with a table) <after relaxation>: - Point out caveats with generating fixups for the opcode in a frag. - -Sat Dec 30 19:02:48 MET 2000 Jan Hubicka <jh@suse.cz> - - * configure.in: Add support for x86_64 and x86_64-*-linux-gnu* - * NEWS: Add x86_64. - -2000-12-29 H.J. Lu <hjl@gnu.org> - - * listing.c (calc_hex): Print the variable part only if the - fragment type is rs_fill. - -2000-12-29 Hans-Peter Nilsson <hp@bitrange.com> - - * doc/internals.texi (tc_conditional_pseudoop, - TC_LINKRELAX_FIXUP): Fix typos. - -2000-12-28 Richard Henderson <rth@redhat.com> - - * write.c (subsegs_finish): Fix thinko last change -- don't - "optimize" the alignment == 0 case. - -2000-12-28 Richard Henderson <rth@redhat.com> - - * as.h (rs_align_test): New. - * frags.c (NOP_OPCODE): Move default from read.c. - (MAX_MEM_FOR_RS_ALIGN_CODE): New default. - (frag_align_code): New. - * frags.h (frag_align_code): Declare. - * read.c (NOP_OPCODE): Remove. - (do_align): Use frag_align_code. - * write.c (NOP_OPCODE): Remove. - (get_recorded_alignment): New. - (cvt_frag_to_fill): Handle rs_align_test. - (relax_segment): Likewise. - (subsegs_finish): Align last subseg in section to the - section alignment. Use frag_align_code. - * write.h (get_recorded_alignment): Declare. - * config/obj-coff.c (size_section): Handle rs_align_test. - (fill_section, fixup_mdeps): Likewise. - (write_object_file): Use frag_align_code. - - * config/tc-alpha.c (alpha_align): Use frag_align_code. - (alpha_handle_align): New. - * config/tc-alpha.h (HANDLE_ALIGN): New. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-i386.h (md_do_align): Use frag_align_code. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-ia64.c (ia64_md_do_align): Don't do code alignment. - (ia64_handle_align): New. - * config/tc-ia64.h (HANDLE_ALIGN): New. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-m32r.c (m32r_do_align): Remove. - (m32r_handle_align): New. - (fill_insn): Use frag_align_code. - * config/tc-m32r.h (md_do_align): Remove. - (HANDLE_ALIGN, MAX_MEM_FOR_RS_ALIGN_CODE): New. - * config/tc-m88k.c, config/tc-m88k.h: Similarly. - * config/tc-mips.c, config/tc-mips.h: Similarly. - - * config/tc-sh.c (sh_cons_align): Use rs_align_test. - (sh_handle_align): Likewise. Handle rs_align_code. - (sh_do_align): Remove. - * config/tc-sh.h (md_do_align): Remove. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-sparc.c (sparc_cons_align): Use rs_align_test. - (sparc_handle_align): Likewise. Handle rs_align_code. - * config/tc-sparc.h (md_do_align): Remove. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - -2000-12-22 DJ Delorie <dj@redhat.com> - - * config/tc-d10v.c (md_assemble): set prev_seg and prev_subseg - when we assemble the first half of a pair. - -2000-12-22 H.J. Lu <hjl@gnu.org> - - * config/tc-i386.c (reloc): Update the macro for non-bfd - assembler. - (BFD_RELOC_X86_64_GOTPCREL): Set to 0 for non-bfd assembler. - -2000-12-22 H.J. Lu <hjl@gnu.org> - - * dwarf2dbg.c (dwarf2_finish): Remove #if BFD_ASSEMBLER. - -Wed Dec 20 14:21:22 MET 2000 Jan Hubicka <jh@suse.cz> - - * tc-i386.h (i386_target_format): Define even for ELFs. - (QWORD_MNEM_SUFFIX): New macro. - (CpuK6,CpuAthlon,CpuSledgehammer, Cpu64, CpuNo64, CpuUnknownFlags): - New macros - (CpuMMX,CpuSSE,Cpu3dnow, CpuUnknown): Renumber. - (IgnoreSize, DefaultSize, No_?Suf, FWait, IsString, regKludge, IsPrefix, - ImmExt): Renumber. - (Size64, No_qSuf, NoRex64, Rex64): New macros. - (Reg64, Imm32S, Imm64, Disp32S, Disp64): New macros. - (Imm8, Imm8S, Imm16, Imm32, Imm1, BaseIndex, Disp8, Disp16, Disp32, - InOutPortReg,ShiftCount, Control, Debug, Test, FloatReg, FloatAcc, - SReg2, SReg3, Acc, JumpAbsolute, RegMMX, RegXMM, EsSeg, InvMem): - Renumber. - (Reg, WordReg): Add Reg64. - (Imm): Add Imm32S and Imm64. - (EncImm): New. - (Disp): Add Disp64 and Disp32S. - (AnyMem): Add Disp32S. - (RegRex, RegRex64): New macros. - (rex_byte): New type. - * tc-i386.c (set_16bit_code_flag): Kill. - (fits_in_unsigned_long, fits_in_signed_long): New functions. - (reloc): New parameter "signed"; support x86_64. - (set_code_flag): New. - (DEFAULT_ARCH): New macro; default to "i386". - (default_arch): New static variable. - (struct _i386_insn): New fields Operand_PCrel; rex. - (flag_16bit_code): Kill; All tests replaced to "flag_code == CODE_64BIT" - (flag_code): New enum and static variable. - (use_rela_relocations): New static variable. - (flag_code_names): New static variable. - (cpu_arch_flags): Default to CpuUnknownFlags|CpuNo64. - (cpu_arch): Add "sledgehammer"; Add CPUAthlon to Athlon and CpuK6 to - K6 and Athlon. - (i386_align_code): Return plain "nop" for x86_64. - (mode_from_disp_size): Support Disp32S. - (smallest_imm_type): Support Imm32S and Imm64. - (offset_in_range): Support size of 8. - (set_cpu_arch): Do not clobber to Cpu64/CpuNo64. - (md_pseudo_table): Add "code64"; use set_code_flat. - (md_begin): Emit sane error message on hash failure. - (tc_i386_fix_adjustable): Support x86_64 relocations. - (md_assemble): Support QWORD_MNEM_SUFFIX, REX registers, - instructions supported on particular arch just partially, - output of 64bit immediates, handling of Imm32S and Disp32S type. - (i386_immedaite): Support x86_64 relocations; support 64bit constants. - (i386_displacement): Likewise. - (i386_index_check): Cleanup; support 64bit addresses. - (md_apply_fix3): Support x86_64 relocation and rela. - (md_longopts): Add "32" and "64". - (md_parse_option): Add OPTION_32 and OPTION_64. - (i386_target_format): Call even for ELFs; choose between - elf64-x86-64 and elf32-i386. - (i386_validate_fix): Refuse GOTOFF in 64bit mode. - (tc_gen_reloc): Support rela relocations and x86_64. - (intel_e09_1): Support QWORD. - -2000-12-15 Diego Novillo <dnovillo@redhat.com> - - * config/tc-i386.c (intel_e09_1): Only flag as a memory operand if - it's not an offset expression. - (intel_e10_1): Ditto. Also, if the operand is an offset expression, - keep the braces '[' and ']' in the output string. - (intel_e11): Ditto. Also remove comparison intel_parser.op_modifier - != FLAT. There is no such op_modifier. - -2000-12-14 Michael Sokolov <msokolov@ivan.Harhan.ORG> + * po/gas.pot: Regenerate. - * dwarf2dbg.c: If we don't have <limits.h>, try including <sys/param.h> - if we have it. +2002-01-17 Nick Clifton <nickc@cambridge.redhat.com> -2000-12-13 Kazu Hirata <kazu@hxi.com> + * macro.c (get_any_string): Add no-c-format comment to prevent + confusion when translating string. + * gasp.c (get_any_string): Add no-c-format comment to prevent + confusion when translating string. - * as.h: Fix formatting. - * cgen.h: Likewise. - * dwarf2dbg.c: Likewise. - * input-scrub.c: Likewise. - * read.h: Likewise. +2002-01-16 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + Johannes Stezenbach <js@convergence.de> + * config/tc-mips.c (percent_op): Ensure longer percent_op's are + matched before the shorter ones. + (my_getSmallParser): Fix handling of nested parentheses in + percent_op's. Code cleanup. + (my_getPercentOp): New function, code from my_getSmallParser. + (my_getSmallExpression): Fix handling of closing parentheses. + Code cleanup. Better comments. -2000-12-13 Mark Elbrecht <snowball3@bigfoot.com> +2002-01-16 Nick Clifton <nickc@redhat.com> - * configure.in (i386-*-msdosdjgpp): Set bfd_gas to yes. + po/tr.po: New file: Turkish translation. + configure.in (LINGUAS): Add "tr". configure: Regenerate. -2000-12-13 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * dwarf2dbg.c: #include <limits.h> only if it exists. - -2000-12-13 Rodney Brown <RodneyBrown@mynd.com> - - * config/tc-hppa.c (pa_ip): Correct CHECK_FIELD typo. - (md_apply_fix): Here too. - -2000-12-12 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.h (ia64_init): Add prototype. - -2000-12-12 H.J. Lu <hjl@gnu.org> - - * dwarf2dbg.c: Enabled only if BFD_ASSEMBLER is defined. - - * read.h (outputting_stabs_line_debug): Change it to int. - * stabs.c (outputting_stabs_line_debug): Likewise. - -2000-12-12 Geoffrey Keating <geoffk@redhat.com> - - * config/obj-bout.c (obj_crawl_symbol_chain): Don't take - the address of a function result. - -2000-12-12 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> - - * config/tc-ppc.c (md_pseudo_table): Add .file and .loc. - (md_assemble): Call dwarf2_emit_insn. - (shlib): Fix typo SHILB -> SHLIB. +2002-01-15 Richard Earnshaw <rearnsha@arm.com> + + Support for VFP instructions + * tc-arm.c (CP_WB_OK, CP_NO_WB): New defines. + (cp_address_required_here): New argument wb_ok. When false, do not + accept write-back forms of addressing. Change all callers. + (FPU_VFP_EXT_NONE, FPU_VFP_EXT_V1xD, FPU_VFP_VFP_V1) + (FPU_VFP_EXT_V2): Define. + (FPU_ARCH_VFP, FPU_ARCH_VFP_V1xD, FPU_ARCH_VFP_V1, FPU_ARCH_VFP_V2): + Define in terms of above. + (vfp_dp_reg_pos, vfp_sp_reg_pos, vfp_ldstm_type): New enums. + (vfp_reg): New struct. + (vfp_regs): New array of registers. + (insns): Add VFP instructions. + (sn_table): New array of VFP single-precision register names. + (dn_table): New array of VFP double-precision register names. + (all_reg_maps): Add the new register tables. + (arm_reg_type): Add new values for above. Increase RET_TYPE_MAX. + (vfp_sp_reg_required_here, vfp_dp_reg_required_here, do_vfp_sp_monadic) + (do_vfp_dp_monadic, do_vfp_sp_dyadic, do_vfp_dp_dyadic) + (do_vfp_reg_from_sp, do_vfp_sp_reg2, do_vfp_sp_from_reg) + (do_vfp_reg_from_dp, do_vfp_reg2_from_dp, do_vfp_dp_from_reg) + (do_vfp_dp_from_reg2, vfp_psr_parse, vfp_psr_required_here) + (do_vfp_reg_from_ctrl, do_vfp_ctrl_from_reg, do_vfp_sp_ldst) + (do_vfp_dp_ldst, vfp_sp_reg_list, vfp_dp_reg_list, vfp_sp_ldstm) + (vfp_dp_ldstm, do_vfp_sp_ldstmia, do_vfp_sp_ldstmdb, do_vfp_ldstmia) + (do_vfp_dp_ldstmdb, do_vfp_xp_ldstmia, do_vfp_xp_ldstmdb) + (do_vfp_sp_compare_z, do_vfp_dp_compare_z, do_vfp_dp_sp_cvt) + (do_vfp_sp_dp_cvt): New functions. + (md_begin): Set soft-float flag for appropriate VFP work. + (md_atof): Handle VFP-format doubles. + (md_parse_option): Handle VFP command-line options. + (md_show_usage): Display VFP command-line options. + +2002-01-15 Richard Earnshaw <rearnsha@arm.com> + + * tc-arm.c (md_parse_option): Tidy up setting of cpu_variant for + various command line options. + +2002-01-15 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-xstormy16.c: (xstormy16_fix_adjustable): Do not fix + vtinherit relocs. + (xstormy16_md_apply_fix3): Do not return a value. + +2002-01-14 Richard Earnshaw <rearnsha@arm.com> + + * tc-arm.c (md_longopts): On targets that aren't bi-endian, support + the -EL/-EB option that matches the target's endianness. (md_parse_option): Likewise. - (ppc_elf_validate_fix): Likewise: - * config/tc-ppc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - -2000-12-12 Nick Clifton <nickc@redhat.com> - - * cgen.h: Fix formatting. - * input-scrub.c: Fix formatting. - * macro.c: Fix formatting. - * config/tc-mips.c: Fix formatting. - * doc/c-mips.texi: Fix formatting. - -Mon Dec 11 14:35:42 MET 2000 Jan hubicka <jh@suse.cz> - - * tc-i386.c (md_assemble): Refuse 's' and 'l' suffixes in the intel - mode; convert 'd' suffix to 's' or 'l'; remove all DWORD_MNEM_SUFFIX - references. - (intel_e09_1): Convert QWORD to 'l' suffix for FP operations; refuse - otherwise. - * tc-i386.h (DWORD_MNEM_SUFFIX): Kill. - (No_dSuf): Kill. - - * i386.h (*_Suf): Remove No_dSuf. - (d_suf, wld_Suf,sld_Suf, sldx_Suf, bwld_Suf, d_FP, sld_FP, sldx_FP) - Remove. - (i386_optab): Remove 'd' in the suffixes. - -2000-12-06 Mark Elbrecht <snowball3@bigfoot.com> - - * config/tc-i386.c (T_SHORT): Undefine before defining. - -2000-12-05 Kazu Hirata <kazu@hxi.com> - - * config/tc-mips.c: Fix formatting. - -2000-12-04 Matthew Hiller <hiller@redhat.com> - - * config/tc-d10v.c (flag_allow_gstabs_packing): New variable. - (md_longopts): New options --gstabs-packing, --no-gstabs-packing. - (md_show_usage): Ditto. - (md_parse_option): Ditto. - (d10v_cleanup): Writes pending instruction only if - ! outputting_stabs_line_debug || ! flag_allow_gstabs_packing. - Fix compile time warning messages. - - * doc/c-d10v.texi: Documents new options. - -2000-12-04 Matthew Hiller <hiller@redhat.com> - - * stabs.c (outputting_stabs_line_debug): New variable. - (stabs_generate_asm_lineno): Set outputting_stabs_line_debug at - function entry and unset at function exit. - - * read.h (outputting_stabs_line_debug): New extern declaration. - - * as.c: Include dwarf2dbg.h for definition of dwarf2_finish. - - * dwarf2dbg.c: Fix compile time warning messages. - -2000-12-03 Kazu Hirata <kazu@hxi.com> - - * config/tc-a29k.c: Fix formatting. - * config/tc-alpha.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-cris.c: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-pj.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - -2000-12-01 Chris Demetriou <cgd@sibyte.com> - - * config/tc-mips.c (mips_ip): When calculating offsets, - don't accept as constant the difference between the - addresses of symbols in two different sections. - - * config/tc-mips.c (macro_build): Add new 'U' and 'J' operand - specifiers. - (validate_mips_insn): Likewise. Also, update 'B' operand - specifier to use OP_*_CODE20 constants and delete 'm' operand - specifier. - (mips_ip): Remove 'm' operand specifier, add 'U' and 'J' - operand specifiers. Change warning generated by 'B' operand - specifier to reflect its new multi-purpose usage. - - * config/tc-mips.c (mips_set_options): Use ISA_UNKNOWN rather than - -1, and update comment. - (file_mips_isa): Likewise. - (mips_cpu): Use CPU_UNKNOWN rather than -1, and update comment. - (ISA_HAS_COPROC_DELAYS, ISA_HAS_64BIT_REGS, gpr_interlocks): Use - ISA_* constants rather than hard-coded numbers. - (mips_cpu_info): New structure. - (mips_cpu_info_table): New table describing CPU and ISA names - and numbers. - (mips_cpu_info_from_name, mips_cpu_info_from_isa, - mips_cpu_info_from_cpu): New functions. - (mips_isa_to_str): New function to get string for ISA name. - (mips_cpu_to_str): Convert to use mips_cpu_info_from_cpu, and - return const char *. - (md_begin): Redo CPU and ISA selection logic, using - mips_cpu_info_from_*. Convert to use ISA_* constants rather - than hard-coded numbers. - (append_insn, mips_emit_delays, macro, macro2): Convert to use - ISA_* constants rather than hard-coded numbers. - (mips_ip): Convert to use mips_isa_to_str to get ISA name. - (md_longopts): Delete OPTION_NO_MIPS32. - (md_parse_option): Convert to use ISA_* constants rather than - hard-coded numbers. Make OPTIONS_MIPS32 case treat MIPS32 - as an ISA. Delete OPTION_NO_MIPS32 case. Convert OPTION_MCPU - to use strcasecmp to recognize "default" and to use - mips_cpu_info_from_name to get CPU numbers from argument. - (md_show_usage): Move -mips32 so it's with the rest of the ISA - flags. Change 4Kc, 4Kp and 4Km CPU entries to just be - mips32-4k. - (s_mipsset): Accept ISA value 32. - * doc/as.texinfo: Clean up MIPS options summary slightly, - remove -no-mips32. Add note about -mips4 and -mips32 - specifying those ISA levels. Delete -mips32 and -no-mips32 - cpu flag descriptions. - * doc/c-mips.texi: Add -mips32 to list of ISA switches. Clean - up the supported CPU switch list, and replace 4Kc, 4Km, and - 4Kp entries with a single mips32-4k entry. Note that you can - use ".set mips32". - - * tc-mips.c (ISA_HAS_64BIT_REGS): Add checks for ISA_MIPS5 and - ISA_MIPS64. - (md_longopts, OPTION_MIPS5, OPTION_MIPS64): Add options for - -mips5 and -mips64. - (md_parse_option): Add cases for OPTION_MIPS5 and - OPTION_MIPS64. - (md_show_usage): Mention -mips5 and -mips64 arguments. - (s_mipsset): Add cases for MIPS5 and MIPS64. - (mips_cpu_info_table): Add entries for MIPS5 and MIPS64 ISAs - and pseudo-CPUs. - * doc/as.texinfo: Mention -mips5 and -mips64 options - and their meanings. - * doc/c-mips.texi: Likewise. Also update introduction - and ".set" usage information. - - * config/tc-mips.c (md_show_usage): Add "sb1" to the - CPU list. - (mips_cpu_info_table): Add SB-1 entries. - * doc/c-mips.texi: Add "sb1" to the list of CPUs - known to the -mcpu option. - - * doc/as.texinfo: Correct description of MIPS -mcpu - option, by copying some of the text from doc/c-mips.texi. - -2000-12-01 Joel Sherrill <joel@OARcorp.com> - - * configure.in (arm-*-rtems*, a29k-*rtems*, h8300-*-rtems*): - New targets. - (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets. - (sparc*-*-rtems*): Switched from a.out to ELF. - * configure: Regenerate. - * config.in: Regenerate. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * po/gas.pot: Regenerate. - -2000-11-30 Philip Blundell <pb@futuretv.com> - - * config/obj-coff.c (obj_coff_weak): Use S_SET_WEAK if it exists, - even in non BFD_ASSEMBLER case. - -2000-11-30 Diego Novillo <dnovillo@redhat.com> - - * tc-i386.c (md_assemble): Swap i.disp_relocs when using intel - syntax. - -2000-11-29 Richard Henderson <rth@redhat.com> - - * dwarf2dbg.c: Rewrite from scratch. Queue all debugging output - until dwarf2_finish; use relaxation to get cross-fragment offsets; - thread multiple subsegments properly; handle multiple code - sections properly; emit proper compilation unit info for assembler - generated debugging. - - * as.h (enum _relax_state): Add rs_dwarf2dbg. - * dwarf2dbg.h (struct dwarf2_line_info): Remove filename. - (dwarf2dbg_estimate_size_before_relax): Declare. - (dwarf2dbg_relax_frag, dwarf2dbg_convert_frag): Declare. - * write.c: Include dwarf2dbg.h. - (cvt_frag_to_fill): Handle rs_dwarf2dbg. - (relax_segment): Likewise. - -2000-11-28 Hans-Peter Nilsson <hp@bitrange.com> - - * config/tc-sh.c (md_convert_frag) <undefined symbol, conditional - jump>: Use as_bad_where instead of as_bad. Tweak error message - accordingly. Stabilize frag by updating fix part and resetting - variant part. - <undefined symbol, unconditional jump>: Ditto. - (sh_elf_cons): Cast *input_line_pointer to unsigned char when - indexing is_end_of_line[]. - (md_assemble): Initialize size to 0. - (md_section_align): Mark parameter seg as unused. - (parse_reg): Parse names case-insensitively. - -2000-11-28 Kazu Hirata <kazu@hxi.com> - - * config/obj-aout.h: Fix formatting. - * config/obj-bout.h: Likewise. - * config/obj-coff.c: Likewise. - * config/obj-coff.h: Likewise. - * config/obj-elf.h: Likewise. - * config/obj-som.h: Likewise. - * config/obj-vms.c: Likewise. - * config/obj-vms.h: Likewise. - * config/tc-h8300.h: Likewise. - * config/tc-ns32k.h: Likewise. - * config/tc-sparc.h: Likewise. - * config/tc-tic54x.h: Likewise. - * config/tc-z8k.h: Likewise. - -2000-11-28 Nick Clifton <nickc@redhat.com> - - * doc/as.1 (COPYING): Mention that the GNU Free Documentation - License is present in the sources, but not the output, and - also available from the GNU website. - (GNU Free Documentation License): Comment out this section. - -2000-11-28 Hans-Peter Nilsson <hp@axis.com> - - * Makefile.am (CPU_OBJ_VALID): Add case to filter out invalid coff - targets. Remove i860 from valid a.out targets. - * Makefile.in: Regenerate. - - * config/tc-cris.c: Include dwarf2dbg.h. - (md_pseudo_table): Add .file and .loc. - (md_assemble): Call dwarf2_emit_insn if generating ELF. - (s_cris_file, s_cris_loc): New. - * config/tc-cris.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - * Makefile.am: Regenerate dependencies. - * Makefile.in: Regenerate. - -2000-11-28 Alan Modra <alan@linuxcare.com.au> - - * expr.c (STANDARD_MUL_PRECEDENCE): Correct value. - (MRI_MUL_PRECEDENCE): Likewise. - (op_rank): Fix a comment typo. - -2000-11-26 Stephane Carrez <Stephane.Carrez@worldnet.fr> - - * config/tc-m68hc11.c (build_indexed_byte): Print the offset in - the error message. - (get_operand): Fix analysis for movw/movb instructions. - -2000-11-24 Nick Clifton <nickc@redhat.com> - - * configure.in (xscale-elf): Add target. - (xscale-coff): Add target. - * configure: Regenerate. - - * config/tc-arm.c (ARM_EXT_V5E): New ARM architecture - extenstion. - (ARM_EXT_XSCALE): New ARM architecture extension. - (ARM_LONGMUL): Rename to ARM_EXT_LONGMUL. - (ARM_HALFWORD): Rename to ARM_EXT_HALFWORD. - (ARM_THUMB): Rename to ARM_EXT_THUMB. - (ARM_ARCH_V4): Remove processor from architecture. - (ARM_ARCH_3M): New architecutre definition. - (ARM_ARCH_V5TE): New architecutre definition. - (ARM_ARCH_XSCALE): New architecutre definition. - (CPU_DEFAULT): Allow to be defaulted to XScale. - (atpcs): New boolean variable. - (ldr_flags): Support 'd' flag for double word loads. - (str_flags): Support 'd' flag for double word stored. - (do_mia): New function. - (do_mar): New function. - (do_mra): New function. - (do_pld): New function. - (do_ldrd): New function. - (do_blx): New function. - (do_bkpt): New function. - (do_clz): New function. - (do_lstc2): New function. - (do_cdp2): New function. - (do_t_blx): New function. - (do_t_bkpt): New function. - (do_smla): New function. - (do_smlal): New function. - (do_smul): New function. - (do_qadd): New function. - (do_co_reg2c): New function. - (LONGEST_INSN): Redefine to 7. - - * doc/c-arm.texi: Document -mxscale, -mmarmv5te and -matpcs - command line switches. - -2000-11-22 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.c (pseudo_func): Add missing initializers. - (struct rsrc): Make line unsigned. - (gr_values): Add missing initializer. - (SLOT_NUM_NOT_SET): Add unsigned cast. - (ia64_elf_section_flags, output_vbyte_mem, count_output, dot_radix, - dot_fframe, dot_vframe, dot_vframesp, dot_vframepsp, dot_save, - dot_restore, dot_restorereg, dot_restorereg_p, dot_handlerdata, - dot_unwentry, dot_altrp, dot_saveg, dot_savef, dot_saveb, dot_savegf, - dot_spill, dot_spillreg, dot_spillreg_p, dot_label_state, - dot_copy_state, dot_unwabi, dot_personality, dot_proc, dot_body, - dot_prologue, dot_endp, dot_regstk, dot_psr, dot_alias, dot_ln, - dot_reg_val, dot_entry, dot_mem_offset, ia64_init, mark_resource, - md_undefined_symbol, md_apply_fix3, tc_gen_reloc, ia64_md_do_align): - Add ATTRIBUTE_UNUSED to unused parameters. - (convert_expr_to_ab_reg): Add parens. - (convert_expr_to_xy_reg): Add parens. Comment out >= REG_GR test. - (dot_prologue): Initialize grsave when declared. - (md_pseudo_table): Add missing initializers. - (operand_match): Add casts to bfd_vma. - (emit_one_bundle): Delete unused local prev. Make required_template - unsigned. - (specify_resource): Cast i to unsigned. - (note_register_values): Use fprintf_vma. - (print_dependency): Likewise. - -2000-11-21 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.c (generate_unwind_image): Call record_alignment - for unwind info section. - (dot_endp): Likewise for unwind section. - - * config/tc-ia64.c (emit_one_bundle): Pass size of 8 not 4 to - fix_new_exp. - -2000-11-21 Jakub Jelinek <jakub@redhat.com> - - * config/tc-sparc.c (md_pseudo_table): Add .file and .loc. - (output_insn): Call dwarf2_emit_insn. - * config/tc-sparc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - -2000-11-17 Richard Henderson <rth@redhat.com> - - * ehopt.c (eh_frame_code_alignment): New arg `in_seg', update all - callers. Don't switch segments. Expect CIE == -1 in .debug_frame. - (check_eh_frame): Handle .eh_frame and .debug_frame concurrently. - -2000-11-17 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c (md_pseudo_table): Add support for .line and - .file pseudo ops. - -2000-11-17 Richard Henderson <rth@redhat.com> - - * config/tc-i386.c (md_pseudo_table): Add .file and .loc. - -2000-11-17 Richard Henderson <rth@redhat.com> - - * dwarf2dbg.c (dwarf2_gen_line_info): Early out for no line number. - * config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Adjust for - tri-state definition of alpha_flag_mdebug. - * config/tc-alpha.c (alpha_flag_mdebug): Init to -1. - (s_alpha_file): Store first .file directive. - (s_alpha_stab): New. - (md_pseudo_table): Add stabs and stabn. - -2000-11-17 Richard Henderson <rth@redhat.com> - - * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn. - -2000-11-17 Richard Henderson <rth@redhat.com> - - * as.c (debug_type): Init to DEBUG_UNSPECIFIED. - (main): Call dwarf2_finish. - * as.h (debug_type): Clarify documentation of the meaning - of this variable. - * dwarf2dbg.c (DWARF2_LINE_MIN_INSN_LENGTH): Default to 1. - (print_stats): Fix parenthesis problem. - (now_subseg_size): New. - (dwarf2_finish): Use it. If DEBUG_DWARF2, emit bits for .debug_info. - (dwarf2_directive_file): Don't set debug_type. - (dwarf2_where): Honor DEBUG_DWARF2 first. - (dwarf2_emit_insn): Renamed from dwarf2_generate_asm_lineno; - do nothing if not emitting dwarf2 debug info, or no work. - * dwarf2dbg.h (dwarf2_emit_insn): Update. - * ecoff.c (add_file): Turn on DEBUG_ECOFF only if DEBUG_UNSPECIFIED. - (ecoff_new_file): Likewise. - * read.c (generate_lineno_debug): Kill ecoff hackery. Update - commentary wrt dwarf2. - - * config/tc-alpha.c (alpha_adjust_symtab_relocs): Add - ATTRIBUTE_UNUSED as needed. - (emit_insn): Call dwarf2_emit_insn. - (s_alpha_file): New. - (s_alpha_loc): New. - (s_alpha_coff_wrapper): Don't handle them. - (md_pseudo_table): Update for .file and .loc. - * config/tc-alpha.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - - * config/tc-arm.c (output_inst): Update for dwarf2_emit_insn; - don't protect with debug_type. - * config/tc-hppa.c (md_assemble): Likewise. - * config/tc-m68hc11.c (m68hc11_new_insn): Likewise. - * config/tc-mn10300.c (md_assemble): Likewise. - * config/tc-sh.c (md_assemble): Likewise. - * config/tc-v850.c (md_assemble): Likewise. - - * config/tc-arm.c (arm_end_of_source): Remove. - * config/tc-hppa.c (pa_end_of_source): Remove. - * config/tc-m68hc11.c (m68hc11_end_of_source): Remove. - * config/tc-mn10300.c (mn10300_finalize): Remove. - * config/tc-sh.c (sh_finalize): Remove. - * config/tc-v850.c (sh_finalize): Remove. - - * config/tc-arm.h (md_end): Remove. - * config/tc-hppa.h (md_end): Remove. - (DWARF2_LINE_MIN_INSN_LENGTH): New. - * config/tc-m68hc11.h (md_end): Remove. - * config/tc-mn10300.h (md_end): Remove. - * config/tc-sh.h (md_end): Remove. - * config/tc-v850.h (md_end): Remove. - - * config/tc-ia64.c (emit_one_bundle): Don't protect - dwarf2 bits with debug_type. - (md_assemble): Likewise. - (ia64_end_of_source): Don't call dwarf2_finish. - -2000-11-16 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.c (errata_nop_necessary_p): Abort if general regno - >= 128 instead of > 128. Abort if predicate regno is >= 64 instead of - > 16. - -2000-11-16 H.J. Lu <hjl@gnu.org> - - * config/obj-elf.c (obj_elf_symver): Don't check the missing - version name. - -2000-11-15 Kazu Hirata <kazu@hxi.com> - - * config/tc-tic30.c: Fix formatting. - * config/tc-tic80.c: Likewise. - * config/tc-v850.c: Likewise. - * config/tc-vax.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - -2000-11-14 DJ Delorie <dj@redhat.com> - - * config/tc-v850.c: Support dwarf2. - * config/tc-v850.h: Ditto. - - * config/tc-v850.c (cons_fix_new_v850): Don't rely on - parse_cons_expression_v850 to initialize hold_cons_reloc. - -2000-11-15 Bernd Schmidt <bernds@redhat.com> - - * tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX. - (errata_nops_necessary_p): New function. - (emit_one_bundle): Call it. Update the GROUP_IDX field in struct - md. - -2000-11-14 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.c (ia64_target_format): If EF_IA_64_BE not set, then - return little endian bfd formats. - -2000-11-14 Kazu Hirata <kazu@hxi.com> - - * config/aout_gnu.h: Fix formatting. - * config/atof-vax.c: Likewise. - * config/m68k-parse.h: Likewise. - * config/m88k-opcode.h: Likewise. - * config/obj-elf.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-cris.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/te-386bsd.h: Likewise. - * config/te-hppa.h: Likewise. - * config/te-nbsd.h: Likewise. - * config/te-ppcnw.h: Likewise. - * config/te-sparcaout.h: Likewise. - * config/te-tmips.h: Likewise. - * config/vax-inst.h: Likewise. - * config/vms-conf.h: Likewise. - -2000-11-14 Jakub Jelinek <jakub@redhat.com> - - * config/tc-alpha.c (s_alpha_prologue): Preserve visibility bits. - -2000-11-13 H.J. Lu <hjl@gnu.org> - - * config/obj-elf.c (elf_frob_symbol): Support - ".symver name,name2@@@nodename". - (elf_frob_file_before_adjust): Likewise. - - * doc/as.texinfo: Updated for ".symver name,name2@@@nodename" - and ".symver name,name2@@@nodename". - Fix a typo. - -2000-11-12 H.J. Lu (hjl@gnu.org) - - * config/obj-elf.c (obj_elf_symver): Check missing version - name. - -2000-11-12 H.J. Lu (hjl@gnu.org) - - * dwarf2dbg.c (dwarf2_generate_asm_lineno): Use addressT - instead of bfd_vma for non-bfd assemblers. - -2000-11-09 Kazu Hirata <kazu@hxi.com> - - * itbl-ops.c: Fix comment typos. - -2000-11-08 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.c (struct unw_rec_list): Add slot_frag field. - (struct unwind): Add next_slot_frag field. - (slot_index): New parameters slot_frag and first_frag. Add code - to add in frag sizes when different. Add comments. - (fixup_unw_records): New locals first_frag and last_frag. Pass new - arguments to slot_index. - (emit_one_bundle): Set slot_frag field. Set next_slot_number after - loop end. Set next_slot_frag field. - -2000-11-07 H.J. Lu <hjl@gnu.org> - - * doc/as.texinfo (.symver): Updated for versioned symbol - reference. - - * obj.h (format_ops): Add the frob_file_before_adjust field. - - * config/obj-aout.c (aout_format_ops): Set the - frob_file_before_adjust field to 0. - * config/obj-coff.c (coff_format_ops): Likewise. - * config/obj-ecoff.c (ecoff_format_ops): Likewise. - - * config/obj-elf.c (obj_elf_symver): Allow duplicated version - name. - (elf_frob_file_before_adjust): New function to remove unneeded - versioned symbols from the symbol table. - (elf_format_ops): Set the frob_file_before_adjust field to - elf_frob_file_before_adjust. - - * config/obj-elf.h (obj_frob_file_before_adjust): Defined if - not defined. - - * config/obj-multi.h (obj_frob_file_before_adjust): Defined. - -2000-11-07 Peter Targett <peter.targett@arccores.com> - - * gas/config/tc-arc.h: Avoid warnings for LITTLE_ENDIAN and - BIG_ENDIAN macros. - * gas/config/tc-arc.c: Use S_IS_LOCAL to test local symbols. - Fix compile time warning messages. - -2000-11-07 Nick Clifton <nickc@redhat.com> - - * stabs.c (generate_asm_file): Increase length of xmalloc'ed - buffer in order to avoid buffer overflows. - -2000-11-06 Steve Ellcey <sje@cup.hp.com> - - * config/tc-ia64.c (md_shortopts, md_parse_option, md_show_usage): - Change M to m for -milp32 or -mlp64 to match gcc. - (dot_endp): Use bytes_per_address instead of 8. - (emit_one_bundle): Use number_to_chars_littleendian instead of - md_number_to_chars. - (fix_insn): Likewise. - (ia64_init): New function. - (ia64_target_format): New function. - (md_begin): Set endianness, arch, and machine as appropriate. - * config/tc-ia64.h: (TARGET_BYTES_BIG_ENDIAN, md_number_to_chars): - Make these macros depend on TE_HPUX macro. - (TARGET_FORMAT): Define. - (HOST_SPECIAL_INIT): Define. - * config/te-hpux.h: New file. - * configure.in: Add "ia64-*-hpux*" target to configure. - * configure: Regenerate. - -2000-11-06 Kazu Hirata <kazu@hxi.com> - - * as.c: Fix formatting. - * dwarf2dbg.c: Likewise. - * input-file.c: Likewise. - * input-file.h: Likewise. - * input-scrub.c: Likewise. - * itbl-ops.c: Likewise. - * listing.c: Likewise. - * macro.h: Likewise. - * messages.c: Likewise. - * read.c: Likewise. - * subsegs.c: Likewise. - * subsegs.h: Likewise. - * write.c: Likewise. - -2000-11-06 Nick Clifton <nickc@redhat.com> - - * doc/as.texinfo: Add GNU Free Documentation License. - * doc/gasp.texi: Add GNU Free Documentation License. - * doc/as.1: Add GNU Free Documentation License. - -2000-11-05 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c: Add include of "dwarf2dbg.h" - -2000-11-02 Per Lundberg <plundis@chaosdev.org> - - * configure.in: Recognise i[3456]86-chaosdev-storm-chaos. - * configure: Regenerate. - -2000-11-01 Nick Clifton <nickc@redhat.com> - - * read.c (original_case_string): New global variable. - (read_a_source_file): Copy opcode string into - original_case_string if clobbering the case of the opcode. - * read.h: Export the definition of original_case_string. - * config/tc-arm.c (md_assembler): When parsing a .req - directive use the original opcode string, not the case - clobbered version. - -2000-11-02 Nick Clifton <nickc@redhat.com> - - * config/tc-mn10300.c (debug_line): Remove this static - variable. - (md_assemble): Call dwarf2_generate_asm_lineno instead of - dwarf2_where and dwarf2_gen_line_info. - -2000-11-02 Theo Honohan <th@futuretv.com> - - * config/tc-arm.c (do_msr): Improve error message. - -2000-10-31 Eric Christopher <echristo@redhat.com> - - * config/tc-mn10300.c (md_apply_fix3): Use valuep if fully resolved - or pc-relative, else use fx_offset. - -2000-10-31 Jim Wilson <wilson@redhat.com> - - * config/tc-ia64.c (struct md): New field tag_fixups. - (ia64_flush_insns): Handle tag_fixups. Error if dangling - qualifying predicate. - (emit_one_bundle): Delete spurious multiplication by one. Handle - tag_fixups. - (ia64_start_line): Error if dangling qualifying predicate. - (defining_tag): New static variable. - (ia64_unrecognized_line, case '['): Parse tags. - (ia64_frob_label): Create tag_fixups. - (md_assemble): Reset md.qp.X_op after using it. - -2000-10-31 Kaz Kojima <kkojima@rr.iij4u.or.jp> - - * config/tc-sh.c (md_apply_fix [BFD_RELOC_SH_PCDISP12BY2]): Allow 4094. - -2000-10-31 Bernd Schmidt <bernds@redhat.co.uk> - - * tc-ia64.c (extra_goodness): Only prefer F in slot 1 and B in slot 2. - -2000-10-30 Kazu Hirata <kazu@hxi.com> - - * expr.c: Fix formatting. - * flonum-copy.c: Likewise. - * flonum.h: Likewise. - * gasp.c: Likewise. - * hash.c: Likewise. - -2000-10-30 Hans-Peter Nilsson <hp@bitrange.com> - - * as.h (OPTION_MD_BASE): Bump to 190. - * as.c (parse_args) <std_longopts>: Add comment about the need to - check OPTION_MD_BASE in as.h. - - * config/tc-sh.c (md_apply_fix): For ELF, do not "adjust back" VAL - for weak symbols. - -2000-10-27 Nick Clifton <nickc@redhat.com> - - * configure.in (emulations): Add m68hc12. - * configure: Regenerate. - * po/gas.pot: Regenerate. - -2000-10-27 Aldy Hernandez <aldyh@redhat.com> - - * config/tc-arm.c (psrs): Remove lowercase versions of spsr* and - cpsr*. - (arm_psr_parse): Handle lowercase CPSR and SPSR. - -2000-10-25 Nick Clifton <nickc@redhat.com> - - * dwarf2out.c (dwarf2_generate_asm_lineno): New function: Generate - a DWARF2 line number information sequence. - - *dwarf2out.h: Add prototype for dwarf2_generate_asm_lineno. - - * read.c (generate_lineno_debug): Update comment describing why - DWARF2 line number debug information is not generated - automatically by this function. - - * doc/as.texinfo: Note that --gdwarf2 only works on some targets, - not all. - - * config/tc-arm.h (md_end): Define. - (DWARF2_LINE_MIN_INSN_LENGTH): Define. - - * config/tc-arm.c (output_inst): Call dwarf2_generate_asm_lineno - if generating DWARF2 line numbers. - (arm_end_of_source): New function. Call dwarf2_finish if - necessary. - - * config/tc-hppa.c (md_assemble): Use dwarf2_generate_asm_lineno. - * config/tc-m68hc11.c (m68hc11_new_insn): Use dwarf2_generate_asm_lineno. - * config/tc-sh.c (md_assemble): Use dwarf2_generate_asm_lineno. - -2000-10-25 Diego Novillo <dnovillo@cygnus.com> - - * tc-i386.c: Fix prototype declarations for functions taking no - arguments. - -2000-10-24 Diego Novillo <dnovillo@cygnus.com> - - * tc-i386.c (i386_operand_modifier): Remove. - (build_displacement_string): Remove. - (i386_parse_seg): Remove. - (i386_intel_memory_operand): Remove. - (i386_intel_operand): Re-write using recursive descent parser based - on MASM documentation. - (struct intel_parser_s): New structure. - (intel_parser): New static variable. - (struct intel_token): New structure. - (cur_token, prev_token): New static variables. - (T_NIL): Define. - (T_CONST): Define. - (T_REG): Define. - (T_BYTE): Define. - (T_WORD): Define. - (T_DWORD): Define. - (T_QWORD): Define. - (T_XWORD): Define. - (T_SHORT): Define. - (T_OFFSET): Define. - (T_PTR): Define. - (T_ID): Define. - (intel_match_token): New function. - (intel_get_token): New function. - (intel_putback_token): New function. - (intel_expr): New function. - (intel_e05): New function. - (intel_e05_1): New function. - (intel_e06): New function. - (intel_e06_1): New function. - (intel_e09): New function. - (intel_e09_1): New function. - (intel_e10): New function. - (intel_e10_1): New function. - (intel_e11): New function. - -2000-10-20 Jakub Jelinek <jakub@redhat.com> - - * config/tc-sparc.c (sparc_ip): Fix a bug which caused v9_arg_p - instructions to loose any special insn->architecture mask. - - * config/tc-sparc.c (v9a_asr_table): Add v9b ASRs. - (sparc_md_end, sparc_arch_types, sparc_arch, - sparc_elf_final_processing): Handle v8plusb and v9b architectures. - (sparc_ip): Handle siam mode operands. Support v9b ASRs (and - request v9b architecture if they are used). - -2000-10-18 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * config/tc-m68k.c: Fix the previous misapplied patch. - -2000-10-18 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * config/tc-m68k.h (RELAX_RELOC_*): New definitions for both - BFD_ASSEMBLER and !BFD_ASSEMBLER. - * config/tc-m68k.c (md_convert_frag_1): Use them instead of - BFD_RELOC_*. - -2000-10-17 Kazu Hirata <kazu@hxi.com> - - * debug.c: Fix formatting. - * depend.c: Likewise. - * dwarf2dbg.c: Likewise. - * dwarf2dbg.h: Likewise. - * ecoff.c: Likewise. - * expr.c: Likewise. - * expr.h: Likewise. - * flonum-konst.c: Likewise. - * frags.h: Likewise. - -2000-10-17 Chandrakala Chavva <cchavva@redhat.com> - - * as.c: New option OPTION_TARGET_HELP. Prints all target specific - options. - * doc/as.texinfo: Added notes about this new option. - -2000-10-16 Hans-Peter Nilsson <hp@bitrange.com> - - * config/tc-sh.c (JREG): Remove. - (md_convert_frag): Remove #if 0:d code using JREG. - -2000-10-15 Diego Novillo <dnovillo@cygnus.com> - - * config/tc-i386.c (i386_operand_modifier): Only match - modifiers SHORT and FLAT if they are followed by a space. - (parse_register): When `allow_naked_reg' is set, do not confuse - identifiers that start with a register name with a register. - -2000-10-12 Kazu Hirata <kazu@hxi.com> - - * app.c: Fix formatting. - * as.c: Likewise. - * as.h: Likewise. - * bit_fix.h: Likewise. - * cgen.c: Likewise. - * cgen.h: Likewise. - * cond.c: Likewise. - -2000-10-11 Alan Modra <alan@linuxcare.com.au> - - * config/obj-elf.c (elf_frob_symbol): Revert 2000-10-07 change. - -2000-10-07 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (md_apply_fix): Remove plainly wrong assert. - Re-arrange function a little and improve error message. - - * write.c (write_relocs): Fix a comment. - - * config/obj-elf.c (elf_frob_symbol): Make section syms global on - link-once sections. - -2000-10-05 Jim Wilson <wilson@cygnus.com> - - * config/tc-ia64.c (resources_match): Handle IA64_RS_PRr. - -2000-10-05 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c: Delete some useless comments, reformat others. - - * config/tc-i386.h (TC_FIX_ADJUSTABLE): Add check to cover - non-global syms in linkonce sections. - -2000-10-04 Ralf Baechle <ralf@gnu.org> - - * config/tc-ia64.c (operand_match): Don't use // style comments. - * config/tc-i370.c: Likewise. - -2000-09-29 Hans-Peter Nilsson <hp@axis.com> - - Changes to handle varying register prefix and user symbol prefix. - * config/tc-cris.c (SYNTAX_RELAX_REG_PREFIX, - SYNTAX_ENFORCE_REG_PREFIX, SYNTAX_USER_SYM_LEADING_UNDERSCORE, - SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE, REGISTER_PREFIX_CHAR): New. - (s_syntax, cris_force_reg_prefix, cris_relax_reg_prefix, - cris_sym_leading_underscore, cris_sym_no_leading_underscore): New. - (demand_register_prefix): New variable. - (md_pseudo_table): New pseudo ".syntax". - (md_longopts): New options --no-underscore and --underscore. - (cris_target_format): Return elf32-us-cris or elf32-cris depending - on symbols_have_leading_underscore. - (get_gen_reg): Accept or require REGISTER_PREFIX_CHAR. - (get_spec_reg): Ditto. - (cris_number_to_imm) <case BFD_RELOC_VTABLE_ENTRY>: Remove FIXME. - Fix formatting. - (md_parse_option) <case 'h' 'H'>: Deprecate; add reference to - --help. - <case OPTION_NO_US, case OPTION_US>: New. - (md_show_usage): Be brief and reformat to match continuation of - --help. - * po/gas.pot: Regenerate. - -2000-09-28 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (hppa_force_relocation): If OBJ_SOM, don't - force relocs for 12 bit branches. - (md_apply_fix): Similarly, adjust logic here. - -2000-09-28 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (md_apply_fix): Add fmt assertion. Don't - adjust for external and weak syms as we will use a reloc. Allow - for +8 offset when calculating limits of branches. - (hppa_fix_adjustable): Undo 2000-09-23 change. - (hppa_force_relocation): Likewise. Add fx_addsy assertion. - Correct distance calculation. - (tc_gen_reloc): Print the file name and line number if we can't - handle a fixup. - - From John David Anglin <dave@hiauly1.hia.nrc.ca> - * config/tc-hppa.c (nonzero_dibits): Define. - (arg_reloc_stub_needed): Check each arg and return value - separately for zero case. - (pa_align): Declare argument `bytes'. - -2000-09-25 Kazu Hirata <kazu@hxi.com> - - * config/tc-cris.c: Fix formatting. - * config/tc-d10v.h: Likewise. - * config/tc-d30v.c: Likewise. - * config/tc-d30v.h: Likewise. - * config/tc-fr30.c: Likewise. - * config/tc-fr30.h: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m68k.h: Likewise. - * config/tc-pj.h: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-ppc.h: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sh.h: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-v850.h: Likewise. - * config/tc-vax.h: Likewise. - * config/tc-w65.h: Likewise. - * config/tc-z8k.h: Likewise. - -2000-09-23 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak - checks only for ELF. - (hppa_force_relocation): Likewise. - -2000-09-22 Jim Wilson <wilson@cygnus.com> - - * config/tc-ia64.c (dv_sem): Add "stop". - (specify_resource, case IA64_RS_PR): Only handles regs 1 to 15 now. - (specify_resource, case IA64_RS_PRr): New for regs 16 to 62. - (specify_resource, case IA64_RS_PR63): Reorder (note == 7) test to - match above. - (mark_resources): Check IA64_RS_PRr. - -2000-09-22 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * config/tc-m68k.c (md_relax_table, m68k_ip, md_convert_frag_1, - md_estimate_size_before_relax): Redesign and clean up the - relaxation mechanism. - -2000-09-21 Kazu Hirata <kazu@hxi.com> - - * config/tc-ns32k.c: Fix formatting. - * config/tc-ns32k.h: Likewise. - -2000-09-20 Kazu Hirata <kazu@hxi.com> - - * config/tc-m32r.c: Fix formatting. - * config/tc-m32r.h: Likewise. - * config/tc-m68851.h: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68hc11.h: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-mcore.c: Likewise. - * config/tc-mcore.h: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-mips.h: Likewise. - * config/tc-mn10200.h: Likewise. - * config/tc-mn10300.h: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-tahoe.h: Likewise. - -2000-09-19 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * config/tc-vax.c (synthetic_votstrs): Remove jbssi and jbcci. - Likewise in relaxation description comments. - -2000-09-18 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow - subtraction of two syms without emitting a relocation. - - From David Huggins-Daines <dhd@linuxcare.com> - * config/tc-hppa.c (hppa_force_relocation): Force relocations for - global or weak symbols. - -2000-09-15 Kazu Hirata <kazu@hxi.com> - - * config/tc-h8300.h: Fix formatting. - * config/tc-h8500.c: Likewise. - * config/tc-h8500.h: Likewise. - * config/tc-hppa.h: Likewise. - * config/tc-i370.h: Likewise. - * config/tc-i386.h: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-i860.h: Likewise. - * config/tc-i960.h: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-ia64.h: Likewise. - -2000-09-14 Kazu Hirata <kazu@hxi.com> - - * config/tc-a29k.c: Fix formatting. - * config/tc-alpha.c: Likewise. - * config/tc-arc.c: Likewise. - * config/tc-arc.h: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-arm.h: Likewise. - * config/tc-avr.c: Likewise. - * config/tc-avr.h: Likewise. - * config/tc-tic30.c: Likewise. - * config/tc-tic30.h: Likewise. - * config/tc-tic54x.c: Likewise. - * config/tc-tic54x.h: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-tic80.h: Likewise. - -2000-09-14 Timothy Wall <twall@cygnus.com> - - * config/tc-ia64.c (specify_resource): For PR%/PR63, note types of - parallel comparisons for later use. - (struct rsrc): Add parallel comparison type. - (resources_match): Skip special cases of PR usage (non-conflicting - parallel compares). - -2000-09-13 Kazu Hirata <kazu@hxi.com> - - * config/obj-ecoff.c: Fix formatting. - * config/obj-elf.c: Likewise. - * config/obj-elf.h: Likewise. - * config/obj-evax.h: Likewise. - * config/obj-generic.h: Likewise. - * config/obj-hp300.c: Likewise. - * config/obj-hp300.h: Likewise. - * config/obj-ieee.h: Likewise. - * config/obj-vms.c: Likewise. - * config/obj-vms.h: Likewise. - -2000-09-13 Anders Norlander <anorland@acc.umu.se> - - * config/tc-mips.c (md_begin): Recognize 4Kc, 4Km and 4Kp processors. - (md_parse_option): Ditto. - (md_longopts): Add -mips32 option. - (md_show_usage): Document new options. - (mips_ip): Assemble sdbbp 20 bit 'm' args for MIPS32. - (mips_ip): Assemble mfc0 with a sub-selection code. - (validate_mips_insn): Handle 'H' (OP_*_SEL) and 'm' (OP_*_CODE20). - (mips_cpu_to_str): New function. - (mips_ip): Use mips_cpu_to_str instead of printing numeric cpu value. - Use CPU_* defines instead of hardcoded numbers. - - * doc/as.texinfo: Document new options. - * doc/c-mips.texi: Ditto. - -2000-09-12 Kazu Hirata <kazu@hxi.com> - - * as.h: Fix formatting. - * asintl.h: Likewise. - * bit_fix.h: Likewise. - * config/obj-aout.c: Likewise. - * config/obj-aout.h: Likewise. - * config/obj-bout.c: Likewise. - * config/obj-bout.h: Likewise. - * config/obj-coff.c: Likewise. - * config/obj-coff.h: Likewise. - * dwarf2dbg.h: Likewise. - * expr.h: Likewise. - * flonum.h: Likewise. - * frags.h: Likewise. - * itbl-ops.h: Likewise. - * macro.h: Likewise. - * read.h: Likewise. - * sb.h: Likewise. - * struc-symbol.h: Likewise. - * subsegs.h: Likewise. - * symbols.h: Likewise. - * tc.h: Likewise. - * write.h: Likewise. - -2000-09-11 Kazu Hirata <kazu@hxi.com> - - * bignum-copy.c: Fix formatting. - * config/tc-i370.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-m68k.c: Likewise. - * ehopt.c: Likewise. - * flonum-copy.c: Likewise. - * flonum-konst.c: Likewise. - * flonum-mult.c: Likewise. - * literal.c: Likewise. - * read.c: Likewise. - * sb.c: Likewise. - * stabs.c: Likewise. - * subsegs.c: Likewise. - -2000-09-09 Philip Blundell <philb@gnu.org> - - * configure.in (arm*-*-uclinux*): New target. - * configure: Regenerate. - -2000-09-09 Kazu Hirata <kazu@hxi.com> - - * input-file.c: Fix formatting. - * itbl-ops.c: Likewise. - * messages.c: Likewise. - -2000-09-08 Philip Blundell <philb@gnu.org> - - * config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when - offset is negative. - -2000-09-07 H.J. Lu <hjl@gnu.org> - - * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM. - * configure: Rebuild. - -2000-09-07 Kazu Hirata <kazu@hxi.com> - - * atof-generic.c: Fix formatting. - * config/tc-mips.c: Likewise. - * config/tc-vax.c: Likewise. - * input-scrub.c: Likewise. - -2000-09-07 Alexandre Oliva <aoliva@redhat.com> - - * config/tc-sh.h (TARGET_FORMAT): Use sh-linux targets. - * configure.in (sh-*-linux*): Added. - * configure: Rebuilt. - -2000-09-06 Kazu Hirata <kazu@hxi.com> - - * config/tc-hppa.c: Fix formatting. - - * ecoff.c: Fix formatting. - -2000-09-06 Alexandre Oliva <aoliva@redhat.com> - - * configure: Rebuilt with new libtool.m4. - -2000-09-05 Kazu Hirata <kazu@hxi.com> - - * cgen.c: Fix formatting. - * config/tc-ia64.c: Likewise. - -2000-09-05 Nick Clifton <nickc@redhat.com> - - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - * po/gas.pot: Regenerate. - -2000-09-05 Hans-Peter Nilsson <hp@axis.com> - - * config/tc-cris.c: Correct comment typos. - -2000-09-05 Eric Christopher <echristo@cygnus.com> - - * config/tc-mn10300.c: Cleanup. - (md_pcrel_from): Enable. - -2000-09-05 Alan Modra <alan@linuxcare.com.au> - - * expr.c (operand): Fix a comment typo. - * write.c (write_relocs): Fix a signed/unsigned warning. - - * config/tc-hppa.c (fudge_reg_expressions): New - (hppa_force_reg_syms_absolute): New. - (pa_equ): Allow reg_section expressions. - * config/tc-hppa.c (md_optimize_expr): Define. - (hppa_force_reg_syms_absolute): Prototype. - - * config/tc-hppa.c (pa_11_fp_reg_struct): Delete. - (pa_parse_number): Pass in arg to select fp reg parsing. - Return 1 to indicate format checks pass. If strict, then only - accept a register or register symbol. Return value in... - (pa_number): New static for pa_parse_number. - (FP_REG_BASE): Define. - (FP_REG_RSEL): Define. - (pre_defined_registers): Apply FP_REG_BASE and FP_REG_RSEL as - appropriate. White space changes. - (need_pa11_opcode): Don't bother passing any params, get them from - globals instead. - (pa_ip): Modify all calls to pa_parse_number and need_pa11_opcode. - Remove extraneous check in case 'Q'. - (pa_equ): Modify call to pa_parse_number to do strict parsing. If - reg, set section of resulting symbol to reg_section. - (pa_parse_space_stmt): Modify call to pa_parse_number. - (pa_space): Likewise. - - * config/tc-hppa.c: (md_apply_fix): Handle vtable relocs. - (hppa_force_relocation): Handle vtable relocs. - (pa_vtable_entry): New. - (pa_vtable_inherit): New. - (md_pseudo_table): Add entries for vtable pseudos. - (hppa_fix_adjustable): Reject reduction of R_PARISC_GNU_VTINHERIT - and R_PARISC_GNU_VTENTRY relocs. Reject reduction of relocs - against weak syms. - (tc_gen_reloc): Remove ELF_ARG_RELOC_INSN code. - (pa_type_args): Don't call symbol_get_bfdsym multiple times. - Set STT_PARISC_MILLICODE for OBJ_ELF when encountering a - millicode import. - * config/obj-elf.c (obj_elf_type): Allow md_elf_symbol_type to - specify a symbol type. - - * config/tc-hppa.h: Reorganize file a little, grouping OBJ_ELF - dependent things together. - (md_elf_symbol_type): Define. - - * config/tc-hppa.c (fix_new_hppa): Elide "$PIC_pcrel$0" pseudo - symbol. - * config/tc-hppa.h (tc_frob_symbol): Elide "$PIC_pcrel$0" here too. - - * config/obj-elf.h (obj_elf_vtable_inherit): Declare. - (obj_elf_vtable_entry): Declare. - - * config/obj-elf.c (obj_elf_vtable_inherit): Return struct fix * - and export function. - (obj_elf_vtable_entry): Similarly. - (elf_pseudo_table): Fix the damage with a cast. - -2000-09-03 Richard Henderson <rth@cygnus.com> - - * config/tc-ia64.c (emit_one_bundle): Stop collecting insns - for template selection when a label is needed. - -2000-09-02 Kazu Hirata <kazu@hxi.com> - - * config/tc-ia64.c: Fix formatting. - -2000-09-02 Nick Clifton <nickc@redhat.com> - - * configure.in: Increase version number to 2.10.91. - * configure: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * po/gas.pot: Regenerate. - * Makefile.in: Regenerate. - -2000-09-01 Alexandre Oliva <aoliva@redhat.com> - - * config/tc-sh.h [OBJ_ELF] (TC_FIX_ADJUSTABLE): Define. - * config/tc-sh.c (md_apply_fix): Map 32-bit relocations that - become PC-relative to BFD_RELOC_32_PCREL. Reject 16- or 8-bit - similar relocs. - (sh_obj_adjustable): Return 1 for PC-relative offsets used in - branches. - -2000-09-01 Niibe Yutaka <gniibe@m17n.org>, Kaz Kojima <kkojima@rr.iij4u.or.jp>, Alexandre Oliva <aoliva@redhat.com> - - * config/tc-sh.h (DIFF_EXPR_OK, GLOBAL_OFFSET_TABLE_NAME, - TC_RELOC_GLOBAL_OFFSET_TABLE, TC_RELOC_RTSYM_LOC_FIXUP): Define. - * config/tc-sh.c (sh_elf_cons, sh_elf_suffix): New functions. - [OBJ_ELF] (md_pseudo_table) <long, int, word, short>: Use them. - (GOT_symbol): New variable. - (md_undefined_symbol): Set it. - -2000-09-01 Richard Henderson <rth@cygnus.com> - - * config/tc-ia64.c (match): Don't inline. - (extra_goodness): New. - (md_begin): Prefer nop.f and nop.b for best_template. - -2000-08-31 Kazu Hirata <kazu@hxi.com> - - * as.c: Fix formatting. - * cond.c: Likewise. - * frags.c: Likewise. - * macro.c: Likewise. - -2000-08-31 Eric Christopher <echristo@cygnus.com> - - * config/tc-mn10300.c: Cleanup and fix warnings. - (md_pseudo_table): Add initializers. - (md_show_usage): Cleanup. - (md_parse_option): Fix warnings. - (md_undefined_symbol): Fix warnings. - (md_conver_frag): Fix warnings. - (tc_gen_reloc): Fix warnings. - (md_apply_fix3): Fix warnings. - (check_operand): Fix warnings. - -2000-08-31 Alexandre Oliva <aoliva@redhat.com> - - * acinclude.m4: Include libtool and gettext macros from the - top level. - * aclocal.m4, configure: Rebuilt. - -2000-08-30 Mark Hatle <mhatle@mvista.com> - - * config/tc-ppc.c (md_parse_option): Recognize -m405. - -2000-08-31 Kazu Hirata <kazu@hxi.com> - - * listing.c: Fix formatting. - -2000-08-29 Kazu Hirata <kazu@hxi.com> - - * app.c: Fix a comment typo. Fix formatting. - -2000-08-25 J. David Anglin <dave@hiauly1.hia.nrc.ca> - - * tc-vax.c (md_convert_frag): Correctly calculate the pc relative - offset of the target destination for jmp instructions. - (md_assemble): Change mode to VAX_ABSOLUTE_MODE as per comments. - -2000-08-24 Hans-Peter Nilsson <hp@axis.com> - - * NEWS: Mention support for CRIS. - -Thu Aug 24 20:41:05 2000 Denis Chertykov <denisc@overta.ru> - - * config/tc-avr.h (TC_IMPLICIT_LCOMM_ALIGNMENT): New macros. - Sets `.lcomm' alignment to zero. - -2000-08-23 Alexandre Oliva <aoliva@redhat.com> - - * config/tc-i386.h <OBJ_MAYBE_ELF, OBJ_MAYBE_COFF> - (TC_FIX_ADJUSTABLE): Define. - -2000-08-23 Jim Wilson <wilson@cygnus.com> - - * config/tc-ia64.c (output_unw_records): Set U & E flags only if - unwind.personality_routine is set. - -2000-08-23 H.J. Lu <hjl@gnu.org> - - * write.c (TC_FIX_ADJUSTABLE): Remove the duplicate. - -2000-08-23 Alexandre Oliva <aoliva@redhat.com> - - * config/tc-i386.h (TC_FIX_ADJUSTABLE): Do *NOT* define if target - environment is pe. - -2000-08-22 H.J. Lu <hjl@gnu.org> - - * config.in (STRICTCOFF): New for strict COFF. - - * configure.in: Define STRICTCOFF for i386-*-msdosdjgpp*, - i386-*-go32* and i386-go32-rtems*. - * configure: Rebuilt. - - * config/obj-coff.c (obj_coff_endef): Follow the historical - behavior if STRICTCOFF is not defined. - - * doc/internals.texi: Document STRICTCOFF. - -2000-08-22 Alexandre Oliva <aoliva@redhat.com> - - * write.c (TC_FIX_ADJUSTABLE): Define to 1, if not defined. - (fixup_segment) Use it instead of TC_DONT_FIX_NON_ADJUSTABLE. - * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. - <OBJ_ELF, OBJ_COFF, TE_PE> (TC_FIX_ADJUSTABLE): Define. - * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. - <OBJ_ELF> (TC_FIX_ADJUSTABLE): Define. - * config/tc-i960.h, config/tc-m68k.h, config/tc-v850.h: - Likewise. - -2000-08-22 Eric Christopher <echristo@cygnus.com> - - * config/tc-mn10300.c: (md_apply_fix): New function. - (mn10300_force_relocation): New function. - (mn10300_fix_adjustable): New function. - - * config/tc-mn10300.h: (TC_FORCE_RELOCATION): Define. - (TC_HANDLES_FX_DONE): Define. - (obj_fix_adjustable): Define. - (MD_APPLY_FIX3): Define. - (TC_LINKRELAX_FIXUP): Define. - - * write.c: (TC_LINKRELAX_FIXUP): Define if not - previously defined. - (fixup_segment): Use TC_LINKRELAX_FIXUP. - - * doc/internals.texi: Document TC_LINKRELAX_FIXUP. - -2000-08-21 Jason Eckhardt <jle@cygnus.com> - - * config/tc-i860.c (md_apply_fix3): Do not insert the immediate - if the fixup resulted in a relocation. - -2000-08-18 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c (decode_shift): Replace as_tsktsk with as_warn. - Make reference to first element of shift_names explicit. - -2000-08-18 Alexandre Oliva <aoliva@redhat.com> - - * write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: Use - obj_fix_adjustable() and tc_fix_adjustable() to tell whether to - add a symbol's address. Removed all target-specific #ifdefs that - used to accomplished the same. - * config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - -2000-08-17 Kazu Hirata <kazu@hxi.com> - - * dwarf2dbg.c: Fix formatting. - -2000-08-17 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c (decode_shift): Allow illegal shifts by zero - to be recoded as logical shift lefts by zero. - -2000-08-16 Jim Wilson <wilson@cygnus.com> - * config/tc-ia64.c (specify_resource, case IA64_RS_GR): Handle - postincrement modified registers. Handle IA64_OPND_R3_2 addl - source registers. - (note_register_values): Handle IA64_OPND_R3_2 operands. - -2000-08-16 Jason Eckhardt <jle@cygnus.com> - - * config/tc-i860.c (md_operand): Silly typo fixed. - -2000-08-16 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c (struct asm_shift): Delete. - (shift[]): Delete. - (enum asm_shift_index): New. - (struct asm_shift_properties): New. - (struct asm_shift_name): New. - (shift_properties[]); New. - (shift_names[]); New. - - (decode_shift): Use new structures. - Issue a warning is "ROR #0" is used. - Issue a warning if "ASR #0" or "LSR #0" is used. - - (md_begin): Initialise arm_shift_hsh table from new - asm_shift_name array. - -2000-08-16 Jakub Jelinek <jakub@redhat.com> - - * config/tc-sparc.c: Kill all warnings. - (md_parse_option): Set -32/-64 for -xarch=, allow all -A archs - in -xarch= as well. - (md_show_usage): Update usage text. - -2000-08-16 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c (do_bx): Warn about "bx px" not being very - useful. - -2000-08-15 Will Cohen <wcohen@redhat.com> - - * config/tc-sh.h (DWARF2_LINE_MIN_INSN_LENGTH): Defined. - - * config/tc-sh.c (md_assemble): Changed so debug_type - test performed for ppi_assemble - * config/tc-sh.c: Included dwarf2dbg.h. - (debug_line): Defined. - (md_assemble): Generates dwarf2 line info. - (sh_finalize): New function. Finalize dwarf2 info. - (assemble_ppi): Returns size of code generated. - (build_Mytes): Returns size of code generated. - (md_pseudo_table): Added "file" and "loc" psuedo ops. - * config/tc-sh.h (md_end): Defined. - (sh_finalize): Declared. - -2000-08-15 Alexandre Oliva <aoliva@redhat.com> - - * config/tc-sh.c (md_apply_fix) [BFD_RELOC_32, BFD_RELOC_16]: Use - md_number_to_chars. - -2000-08-14 Nick Clifton <nickc@redhat.com> - - * config/tc-arm.c (do_bx): Allow "bx pc". - -2000-08-14 Jim Wilson <wilson@cygnus.com> - - * config/tc-ia64.c (md_longopts): Add -mconstant-gp and -mauto-pic. - (md_parse_option): Add OPTION_MCONSTANT_GP and OPTION_MAUTO_PIC. - (md_begin): Change assignment to md.flag to OR in the new bit. - -2000-08-14 Mark Elbrecht <snowball3@bigfoot.com> - - * config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Set the debug - flag for storage types C_ARG, C_REGPARM, C_FIELD, C_MOS, C_MOE, - C_MOU, and C_EOS. - -2000-08-14 Jason Eckhardt <jle@cygnus.com> - - * NEWS: Mention i860 support. - -Mon Aug 14 11:49:12 2000 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - -2000-08-14 Andreas Schwab <schwab@suse.de> - - * doc/c-arm.texi (ARM Directives): Fix warnings from makeinfo. - -2000-08-11 Andreas Schwab <schwab@suse.de> - - * doc/c-i860.texi (Opcodes for i860): Remove braces from @item - argument. - -2000-08-11 Kazu Hirata <kazu@hxi.com> - - * expr.c: Fix formatting. - * config/obj-bout.c: Likewise. - -2000-08-10 Jason Eckhardt <jle@cygnus.com> - - * doc/c-i860.texi: Flesh out the i860 section more. - -2000-08-10 Kazu Hirata <kazu@hxi.com> - - * symbols.c: Fix formatting. - * expr.c: Likewise. - -Wed Aug 9 16:28:21 EDT 2000 Diego Novillo <dnovillo@cygnus.com> - - * tc-i386.c (md_assemble): Skip suffix check if the opcode modifier - has the IgnoreSize bit set. - -2000-08-09 Alan Modra <alan@linuxcare.com.au> - - From Rodney Brown <RodneyBrown@mynd.com> - * configure.in: Use elf on Unixware 7 (i586-sco-sysv5uw7.1.0) - * configure: Regenerate. - -2000-08-09 Kazu Hirata <kazu@hxi.com> - - * hash.c: Fix formatting. - * gasp.c: Likewise. - -2000-08-08 Jason Eckhardt <jle@cygnus.com> - - * config/tc-i860.h: Rework completely for BFD_ASSEMBLER. - (i860_fix_info): New enum. - (MD_APPLY_FIX3): Define. - (WORKING_DOT_WORD): Define. - (TC_HANDLES_FX_DONE): Define. - (DIFF_EXPR_OK): Define. - (LISTING_HEADER): Define. - (TARGET_FORMAT): Select target format based on endian flag. - (TARGET_BYTES_BIG_ENDIAN): Default to little endian. - (target_big_endian): Add external declaration. - - * config/tc-i860.c: All existing code reworked completely. Other - new code shown below. - (SYNTAX_SVR4): Define. - (target_warn_expand): New variable. - (md_shortopts): Declare and define (-Qy, -Qn, and -V options). - (md_longopts): Declare and define with new options (-EL, -EB, - and -mwarn-expand). - (md_show_usage): New function. - (md_operand): New function. - (obtain_reloc_for_imm16): New function. - (md_apply_fix3): New function. - (tc_gen_reloc): New function. - -2000-08-08 Stephane Carrez <Stephane.Carrez@worldnet.fr> - - * config/tc-m68hc11.c (build_jump_insn): Make sure the - 2 bytes of the jump address are in the same frag. - (find): Accept 68hc12 register indirect modes. - - * NEWS: Mention 68HC11 & 68HC12 support. - -2000-08-07 Richard Henderson <rth@cygnus.com> - - * config/tc-ia64.c (unwind): Add prologue_mask member. - (dot_vframe): Elide psp_gr record if it overlaps prologue_gr. - (dot_save): Likewise for pfs_gr, rp_gr, and preds_gr. - (dot_body): Clear unwind.prologue_mask. - (dot_prologue): Set it. Accept a register second argument. - -2000-08-07 Kazu Hirata <kazu@hxi.com> - - * config/atof-ieee.c: Fix formatting. - * config/atof-tahoe.c: Likewise. - -2000-08-06 Nick Clifton <nickc@cygnus.com> - - * config/tc-sparc.c (md_begin): Fix typo in recent formatting - work. - - * doc/as.texinfo (Pseudo Ops): Update to include descriptions - of .popsection, .previous, .pushsection, .subsection, - .version, .vtable_entry, .vtable_inherit and .weak. - -2000-08-05 Kazu Hirata <kazu@hxi.com> - - * config/tc-cris.c: Fix formatting. - * config/tc-i386.c: Likewise. - * config/tc-sparc.c (sparc_ip): Simplify the code. - -2000-08-04 Kazu Hirata <kazu@hxi.com> - - * config/tc-cris.c: Rearrange code for readability. - * config/tc-d10v.c: Fix formatting. - * config/tc-m32r.c: Likewise. - * config/tc-sparc.c: Likewise. - -2000-08-02 Jim Wilson <wilson@cygnus.com> - - * config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode - before ia64_find_opcode. - (md_assemble): Likewise. - -2000-08-01 Nick Clifton <nickc@cygnus.com> - - * config/tc-arm.c (do_mrs): Fix skip of 'cpsr_all' flag. - Undo some formatting fixes. - -2000-08-01 Kazu Hirata <kazu@hxi.com> - - * config/obj-som.c: Fix formatting. - * config/obj-ieee.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-v850.c: Likewise. - -2000-08-01 Nick Clifton <nickc@redhat.com> - - * doc/c-m68k.texi (section M680x0 Options): Turn into a table - index by command line option. - -2000-08-01 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * doc/c-m68k.texi (@cindex @samp{--pcrel}): Rewrite option description. - (@node M68K-Branch): Rewrite to match the reality. - -2000-07-31 Jason Eckhardt <jle@cygnus.com> - - * doc/c-i860.texi: New file. - * doc/Makefile.am (CPU_DOCS): Add c-i860.texi. - * doc/Makefile.in: Regenerate. - * doc/all.texi: Add I860 as relevant architecture. - * doc/as.texinfo: Include i860 dependent file c-i860.texi. - -2000-07-31 Kazu Hirata <kazu@hxi.com> - - * config/tc-d30v.c: Fix formatting. - -2000-07-31 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * config/tc-m68k.c (flag_keep_pcrel, OPTION_PCREL): Add --pcrel option. - (md_convert_frag_1, md_estimate_size_before_relax): When making DBcc - long emit a long branch if available instead of an absolute jump, never - emit absolute jumps for anything with --pcrel. - - * doc/c-m68k.texi: Document new command line option. - -2000-07-29 Marek Michalkiewicz <marekm@linux.org.pl> - - * config/tc-avr.c: Use PARAMS macro in function declarations. - Don't declare md_pcrel_from_section (already in tc-avr.h). - (avr_operands): Use AVR_UNDEF_P and AVR_SKIP_P macros. - (avr_operand): Don't set (unsigned) op_mask to -1. - -2000-07-28 Jason Eckhardt <jle@cygnus.com> - - * configure.in: Add bits for i860-stardent-{sysv4, elf}*. +2002-01-14 Richard Earnshaw <rearnsha@arm.com> + + * tc-arm.c (md_longopts): Fix misplaced #endif -- the -oabi option + is not dependent on ARM_BI_ENDIAN. + +2002-01-14 Richard Earnshaw <rearnsha@arm.com> + + * tc-arm.c (all error messages): Normalize capitalization of messages. + + * tc-arm.h (md_operand): Delete define. + * tc-arm.c (in_my_get_expression): New static variable. + (my_get_expression): Set and clear it. + (md_operand): New function. If called from my_get_expression + put the error in inst.error. + (output_inst): Now takes argument of instruction being assembled. + Print it out with any error message. + (do_ldst, do_ldstv4, thumb_load_store): Fault attempt to use a store + with '=' syntax. + (end_of_line): Don't update inst.error if it is already set. + +2002-01-11 Richard Earnshaw <rearnsha@arm.com> + + * tc-arm.c ((do_ldst): Fix handling an immediate expression pseudo + op that can be translated into a mvn instruction. + +2002-01-11 Steve Ellcey <sje@cup.hp.com> + + * gas/config/tc-ia64.h (MD_FLAGS_DEFAULT): New Macro for + setting default md.flags. + (SHT_INIT_ARRAY): New elf special section used by HP-UX. + (SHT_FINI_ARRAY): New elf special section used by HP-UX. + * gas/config/tc-ia64.c (setup_unwind_header): Add support + for 32 bit unwind info blocks. + (generate_unwind_image): Add support for different types + of unwind images (32 bits and/or big-endian). + (ia64_init): Use MD_FLAGS_DEFAULT to set md.flags. + (ia64_target_format): Add support for hpux target formats. + (ia64_gen_real_reloc_type): Add support for FUNC_IPLT_RELOC. + (ia64_elf_section_type): Add support for SHT_INIT_ARRAY and + SHT_FINI_ARRAY elf section types. + +2002-01-10 Richard Earnshaw <rearnsha@arm.com> + + * tc-arm.c (struct reg_entry): Move before prototypes. + (int_register, cp_register, fp_register): Delete. + (reg_table): Delete. Replaced with ... + (rn_table, cp_table, cn_table, fn_table, mav_mvf_table) + (mav_mvd_table, mav_mvfx_table, mav_mvdx_table, mav_mvax_table) + (mav_dspsc_table): ... one table per register set. + (arm_reg_hsh): Delete. + (struct reg_map): New structure. + (all_reg_maps): New array. + (enum arm_reg_type): New enums. + (build_reg_hsh): New function. + (insert_reg_alias): Use hash table passed by caller. Adjust all + callers. + (create_register_alias): New function, split out from ... + (md_assemble): ... here. + (md_begin): Build new register hash tables. + (arm_reg_parse): New argument for the hash table to search. Adjust all + callers. + (arm_reg_parse_any): New function. + (co_proc_number): Look up the processor number in the processor hash + table. + (cirrus_regtype): Delete. + (cirrus_register, cirrus_mvf_register, cirrus_mvd_register) + (cirrus_mvfx_register, cirrus_mvdx_register, cirrus_mvax_register) + (ARM_EXT_MAVERICKsc_register): Delete. + (do_c_binops_1, do_c_binops_2, do_c_binops_3): Delete. + (do_c_binops_1[a-o], do_c_binops_2[a-c], do_c_binops_3[a-d]): New + functions. + (do_c_triple_4, do_c_triple_5): Delete. + (do_c_triple_4[ab], do_c_triple_5[a-h]): New functions. + (do_c_quad_6): Delete. + (do_c_quad_6[ab]): New functions. + (do_c_binops, do_c_triple, do_c_quad, do_c_shift, do_c_ldst): Rework + arguments to use new register parsing methods. + (cirrus_reg_required_here): Likewise. + (insns): Reclassify cirrus maverick worker functions. + (cirrus_valid_reg): Delete. + +2002-01-07 Jason Thorpe <thorpej@wasabisystems.com> + + * configure.in (sh*le): Set cpu_type=sh and endian=little. + (sh*-*-netbsdelf*): New target. + * configure: Regenerate. + * tc-sh.h: Update copyright years. + (TARGET_FORMAT): Add version for TE_NetBSD. + +2002-01-07 Nick Clifton <nickc@cambridge.redhat.com> + + * read.c (emit_expr): Do not allow 'size' or 'nbytes' to go + negative. + +2002-01-06 Alan Modra <amodra@bigpond.net.au> + + * config/tc-m68k.h (md_prepare_relax_scan): Rewrite. + * config/tc-m68k.c (md_relax_table): Add md_prepare_relax_scan comment. + +2002-01-05 Daniel Jacobowitz <drow@mvista.com> + + * tc-mips.c (mips_cprestore_valid): New flag. + (mips_frame_reg_valid): New flag. + (macro) [M_JAL_2]: Check both flags. + [M_JAL_A]: Likewise. + (s_cprestore): Set mips_cprestore_valid. + (tc_get_register): If setting mips_frame_reg, set + mips_frame_reg_valid and clear mips_cprestore_valid. + (s_mips_ent): Clear both flags. + (s_mips_end): Clear both flags. + +2002-01-05 Alan Modra <amodra@bigpond.net.au> + + * write.c (write_object_file): Make use of bfd_section_list_remove. + * config/obj-ecoff.c (ecoff_frob_file): Likewise. + * config/tc-mmix.c (mmix_frob_file): Likewise. + +2002-01-04 Jason Thorpe <thorpej@wasabisystems.com> + + * configure.in (i386-*-netbsdelf*): Collapse target into... + (i386-*-netbsd*): ...this. Add support for x86-64. * configure: Regenerated. - * config/obj-elf.c (obj_elf_type): Recognize a fifth type - of operand to the .type directive (.e.g, "type"). - -2000-07-28 Alan Modra <alan@linuxcare.com.au> - - * as.h (warn_comment, found_comment, found_comment_file): Declare. - * app.c (do_scrub_chars): Record where first comment found. - * read.c (read_a_source_file): Init found_comment on entry, and - notify whether comments found on exit. - * config/tc-hppa.c (md_shortopts): Add "c". - (md_longopts): Add warn-comment. - (md_parse_option): Handle it. - (md_show_usage): Show available options. - * config/tc-hppa.h (WARN_COMMENTS): Define if TE_LINUX - -Thu Jul 27 11:25:01 2000 Andrew Cagney <cagney@b1.cygnus.com> - - * config/tc-mn10300.c (md_convert_frag): Fix printfs. - (tc_gen_reloc): Add cast when assigning bfd_abs_symbol to - sym_ptr_ptr - (md_estimate_size_before_relax): Don't fall off end of function. - -2000-07-27 Kazu Hirata <kazu@hxi.com> - - * config/tc-avr.c: Fix formatting. - * config/tc-ns32k.c: Likewise. - -2000-07-27 Alan Modra <alan@linuxcare.com.au> - - * config/tc-d10v.c (find_opcode): Remove extraneous `='. - -2000-07-27 Kazu Hirata <kazu@hxi.com> - - * config/tc-d10v.c: Fix formatting. - * config/tc-z8k.c: Likewise. - * config/tc-sparc.c: Likewise. - -2000-07-26 Dave Brolley <brolley@redhat.com> - - * cgen.c (queue_fixup): Declare opinfo. - (gas_cgen_parse_operand): Mark unused parameters with ATTRIBUTE_UNUSED. - (gas_cgen_md_operand): Ditto. - (gas_cgen_md_apply_fix3): Ditto. - -2000-07-24 Mark Elbrecht <snowball3@bigfoot.com> - - * config/obj-coff.c (obj_frob_symbol): Don't merge - labels. Don't merge if the symbol isn't constant. Return - immediately if a symbol is merged. - -2000-07-22 Alan Modra <alan@linuxcare.com.au> - - * frags.c (frag_align): Correct absolute section alignment. - -2000-07-20 DJ Delorie <dj@redhat.com> - - * config/obj-coff.c (obj_frob_symbol): revert previous change, - it breaks linking against DLLs. - -2000-07-20 Hans-Peter Nilsson <hp@axis.com> - - * configure.in: Add CRIS support. - * configure: Regenerate. - * Makefile.am: (CPU_TYPES): Add cris. - (CPU_OBJ_VALID) [aout]: Add cris. - (MULTI_CPU_TYPES): Add cris. - (MULTI_CPU_OBJ_VALID) [aout]: Add cris. - [coff]: Only i386 and mips are valid. - (TARGET_CPU_CFILES): Add config/tc-cris.c. - (TARGET_CPU_HFILES): Add config/tc-cris.h. - (MULTI_CFILES): Add config/e-crisaout.c and config/e-criself.c. - Regenerate dependencies. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * as.c: Declare crisaout, criself. - * config/tc-cris.h, config/tc-cris.c: New. - * config/e-criself.c, config/e-crisaout.c: New. - * po/POTFILES.in, po/gas.pot: Regenerate. - -2000-07-20 Kazu Hirata <kazu@hxi.com> - - * read.c: Fix formatting. - * write.c: Fix formatting. - -2000-07-19 H.J. Lu <hjl@gnu.org> - - * sb.c: Include <stdlib.h> if exists for abort (). - -2000-07-19 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (hppa_fix_adjustable): Correct LR%/RR% comment. - (arg_reloc_stub_needed): #ifdef OBJ_SOM, not #ifdef SOM. - (pa_type_args): Same here. - -2000-07-17 Mark Elbrecht <snowball3@bigfoot.com> - - * config/obj-coff.c (obj_frob_symbol): Don't merge labels. Don't - merge if the symbol isn't constant. Don't call S_SET_EXTERNAL if - the storage class is already set. - -2000-07-17 Kazu Hirata <kazu@hxi.com> - - * config/tc-m68hc11.c: Fix formatting. - * config/tc-mn10200.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/tc-pj.c: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-w65.c: Likewise. - -2000-07-17 Frank Ch. Eigler <fche@redhat.com> - - * expr.c (operand): Permit %bin literals if LITERAL_PREFIXPERCENT_BIN - is defined. - -2000-07-15 Ian Lance Taylor <ian@zembu.com> - - * doc/c-mips.texi (MIPS Opts): Remove erroneous space after - @code. - -2000-07-15 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (hppa_fix_adjustable): Use the same checks for - ELF as are used for SOM (except the 32-bit reloc one) to decide - whether a symbol can be reduced to a section symbol. Expand on - the comment for symbols involved in LR% and RR% expressions. - -2000-07-14 Nick Clifton <nickc@cygnus.com> - - * config/tc-mips.c (mips_disable_float_construction): New - static variable. Set to true if doubles should not be - constructed by loading two single width fp registers with - halves of the value. - (mips_ip): Test mips_disable_float_construction. - (md_longopts): Add command line switches --construct-floats - and --no-construct-floats. - (md_parse_option): Parse new command line options. - (md_show_usage): Describe new command line options. - - * doc/c-mips.texi: Document new command line options. - -2000-07-13 Koundinya K <kk@ddeorg.soft.net> - - * configure.in: Remove the test /usr/dde for mips-*-sysv4*MP* - * configure: Regenerate. - -2000-07-13 Hans-Peter Nilsson <hp@axis.com> - - * configure.in (DEFAULT_EMULATION setting): Revert part of - 2000-07-01 change that set te_multi=multi unless set to tmips. - * configure: Regenerate. - -2000-07-12 Mark Elbrecht <snowball3@bigfoot.com> - - * config/obj-coff.c (coff_frob_section): Add padding to the last - section when aligning it increases its size. - -2000-07-11 Kazu Hirata <kazu@hxi.com> - - * config/tc-tic54x.c: Fix formatting. - -2000-07-10 Kazu Hirata <kazu@hxi.com> - - * config/tc-h8500.c: Fix formatting. - * config/tc-tic54x.c: Fix formatting. - -2000-07-10 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (md_apply_fix): Check fmt 12 and 22 pc-rel - displacements correctly. - - * read.h (s_abort): Add ATTRIBUTE_NORETURN. - -2000-07-10 Ryan Bradetich <rbradetich@uswest.net> - - * hash.c (hash_insert): Add cast to obstruct_alloc to fix - warning. - (hash_jam): Ditto. - -2000-07-09 Alan Modra <alan@linuxcare.com.au> - - From David Huggins-Daines <dhd@linuxcare.com> - * config/te-hppalinux64.h: Add a new emulation. - * configure.in (emulations): Add configure bits to support the - 64-bit Linux/parisc target. - * configure: Regenerate. - - * config/tc-hppa.c (md_parse_option): Support `-V' for ELF. - (md_shortopts): Add `V' for ELF. - - * config/tc-hppa.c (arg_reloc_stub_needed): Define as zero except - when SOM or ELF_ARG_RELOC are defined. - (pa_type_args): Only set symbol_arg_reloc_info when SOM or - ELF_ARG_RELOC are defined. - (pa_stringer_aux): Don't pa_check_current_space_and_subspace here.. - (pa_stringer): ..Do it here instead. Fix comment typos. - (hppa_force_relocation): Cast enums to int before comparing with - ints. - - From Ryan Bradetich <rbradetich@uswest.net> - * config/tc-hppa.c: Removed unneeded libbfd.h to fix macro - redifinition warning. - (md_apply_fix): Added cast from enum to int for fixP->fx_r_type. - (hppa_force_relocation): ditto - (md_apply_fix): Added cast to buf to fix warnings. - - * config/tc-hppa.h (pa_define_label, parse_cons_expression_hppa, - cons_fix_new_hppa, hppa_force_relocation): Prototype. - - * config/tc-hppa.c (reloc_type): It's an enum for OBJ_ELF. - (R_N0SEL, R_N1SEL): Define only for OBJ_SOM. - (tc_gen_reloc): Make `code' a reloc_type and `codes' a - reloc_type** to avoid warnings in switch. - (md_apply_fix): Make insn, val signed. Zap buf_wd and read insn a - little earlier instead. - - * config/tc-hppa.c (symbol_arg_reloc_info): Define for both som - and elf. - (pa_type_args): Use symbol_arg_reloc_info. - (struct pa_it): Make arg_reloc unsigned int. - (struct hppa_fix_struct): Likewise for fx_arg_reloc. - (pa_text, pa_data, pa_comm): Don't compile for TE_LINUX. - (pa_code): Delete. pa_text duplicates this function. - (md_pseudo_table): Call obj_elf_text for ".code" if TE_LINUX. - (fix_new_hppa): Argument offset is offsetT, arg_reloc is unsigned - int. - (cons_fix_new_hppa): Actually change selector to e_fsel when - warning about assuming so. - (tc_gen_reloc): More example elf arg reloc code. - (md_apply_fix): Use arg_reloc_stub_needed for elf too. - (hppa_force_relocation): Likewise. - - * config/tc-hppa.h: Use TARGET_ARCH_SIZE to select target include - files. - (pa_end_of_source): Prototype. - (hppa_fix_adjustable): Prototype. - (LABELS_WITHOUT_COLONS): Move it.. - * config/te-hppa.h: To here. - - * config/te-hppa64.h: New file. - - * config/tc-hppa.c: Use TARGET_ARCH_SIZE to select target reloc - type. - (md_apply_fix): Pass stdoutput to bfd_hppa_insn2fmt. Handle - format -10, -16, 16 relocs. - (hppa_elf_mark_end_of_function): Test for null - last_call_info->start_symbol - - * config/tc-hppa.c (pa_ip): In case 'V', pass `strict' to - CHECK_FIELD, not INSERT_FIELD_AND_CONTINUE. Don't pass opcode to - re_assesmble_* functions. Delete extraneous statements. Fix - typos in comments. - (md_apply_fix): Compare against 1048575 in case 21. Don't pass - insn to re_assemble_*. - -2000-07-08 Ulf Carlsson <ulfc@engr.sgi.com> - - * doc/internals.texi (Expressions): Fix typo. - -2000-07-08 Kazu Hirata <kazu@hxi.com> - - * config/tc-sh.c: Fix formatting. - * config/tc-tic54x.c: Fix formatting. - * depend.c: Fix formatting. - * flonum-konst.c: Likewise. - * flonum-mult.c: Likewise. - -2000-07-07 Kazu Hirata <kazu@hxi.com> - - * config/tc-sh.c: Fix comments. - * config/obj-vms.c: Fix comments. - * config/tc-a29k.c: Likewise. - * config/tc-alpha.c: Likewise. - * config/tc-h8300.c: Likewise. - * config/tc-h8500.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-ns32k.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-z8k.c: Likewise. - -2000-07-06 Mark Elbrecht <snowball3@bigfoot.com> - - * config/obj-coff.c (TC_COFF_SECTION_DEFAULT_ATTRIBUTES): New. - Default to '(SEC_LOAD | SEC_DATA)'. - (obj_coff_section) [BFD_ASSEMBLER]: Use it. - - * doc/internals.texi (CPU Backend): Describe - TC_COFF_SECTION_DEFAULT_ATTRIBUTES. - -Thu Jul 6 17:20:58 2000 Andrew Cagney <cagney@b1.cygnus.com> - - * as.c (parse_args): NULL terminate the long option list. - -Tue Jul 4 14:08:28 2000 Andrew Cagney <cagney@b1.cygnus.com> - - * config/tc-d30v.h: Include "write.h" for fixS. - (d30v_start_line, md_pcrel_from_section): Add function prototypes. - -2000-07-05 Nick Clifton <nickc@cygnus.com> - - * config/tc-d30v.c (write_2_short): Further changes to warning - messages produced when combining EITHER_BUT_PREFER_MU attributed - opcodes. - -2000-07-05 DJ Delorie <dj@redhat.com> - - * MAINTAINERS: new - -2000-07-04 Alexandre Oliva <aoliva@redhat.com> - - * config/tc-arm.c (psrs): Accept combinations of flags. - -2000-07-03 Marek Michalkiewicz <marekm@linux.org.pl> - - * config/tc-avr.c: Change _ () to _() around all strings marked - for translation (exception from the usual coding style). - (avr_opt): New struct variable, how the new switches are set. - (OPTION_MMCU): Define as 'm' and actually use. - (md_longopts): Add -mall-opcodes, -mno-skip-bug, -mno-wrap. - (show_mcu_list): New function, display the list of known MCUs. - (md_show_usage): Document the new switches. Call show_mcu_list. - (avr_set_arch): Change 'm' to OPTION_MMCU. - (md_parse_option): Call show_mcu_list if unknown MCU specified. - Handle the new switches. - (avr_operands): Disable warnings for undefined combinations of - operands if -mall-opcodes. Disable warnings for skipping two-word - instructions if enhanced core or -mno-skip-bug. - (avr_operand): Accept all addressing modes on avr1 if -mall-opcodes. - (md_apply_fix3): Reject 8K wrap if >8K or -mno-wrap. - (md_assemble): Accept opcodes not supported by MCU if -mall-opcodes. - (avr_ldi_expression): Warn about implicit lo8(). - * config/tc-avr.h (md_pcrel_from_section): Add prototype. - -2000-07-01 Koundinya K <kk@ddeorg.soft.net> - - * configure.in: Add entry for mips-*-sysv4*MP* - * configure: Rebuild - * config/tc-mips.c (mips_target_format): Return elf32-tradbigmips or - elf32-tradlittlemips for traditional mips targets. - * config/tc-mips.c (md_estimate_size_before_relax): Duplicate the - test for Link Once sections as in adjust_reloc_syms. - * config/te-tmips.h: New file for traditional mips targets. Define - TE_TMIPS. - -2000-06-29 Mark Elbrecht <snowball3@bigfoot.com> - - * config/obj-coff.c (obj_coff_setcion) [BFD_ASSEMBLER]: If the - flags argument is not present, don't change an existing section's - section's attributes. If the flags argument is present, warn if the - attributes don't match the section's current attributes. When - long section names are supported, set SEC_LINK_ONCE and - SEC_LINK_DUPLICATES_DISCARD for a new .gnu.linkonce section. - -Thu Jun 29 21:30:00 2000 Hans-Peter Nilsson <hp@axis.com> - - * config/obj-aout.c (obj_aout_type): Do not ignore for undefined - symbols; create them. - -2000-06-29 Mark Elbrecht <snowball3@bigfoot.com> - - * write.c (set_segment_vma): New: Set vma and lma for a segment. - (write_object_file) [BFD_ASSEMBLER && OBJ_COFF && TE_GO32]: Use it. - -2000-06-27 Aldy Hernandez <aldyh@redhat.com> - - * config/tc-mips.c (mips_ip): handle "(foo-.-4)" type of - expressions. Ignore the problem when handling 16 bit signed - immediates, because the assembler will take care of the relocation - later. - -2000-06-27 Nick Clifton <nickc@cygnus.com> - - * config/tc-d30v.c (write_2_short): Do not allow opcodes with - the EITHER_BUT_PREFER_MU attribute to be combined into a reverse - sequential order, and emit warning messages if the input source - code contains constructs like that, or parallel constructs - containing such opcodes. - -2000-06-26 Marek Michalkiewicz <marekm@linux.org.pl> - - * config/tc-avr.c (mcu_types): Rename avr4 to avr5, add avr4. - Add more MCU types for avr4 and avr5. Replace at94k{10,20,40} - with just at94k. Change AVR_ISA_85xx back to AVR_ISA_2xxx. - (md_show_usage): Update usage message. - (md_parse_option): Allow redefinition of MCU type within the - same avr[1-5] bfd machine type. Show both old and new MCU type - in the error message. - (md_apply_fix3): Support 8K wrap if AVR_ISA_MEGA is not set. - Simplify 8K wrap code. - -2000-06-25 Kazu Hirata <kazu@hxi.com> - - * config/obj-aout.c: Remove all uses of DEFUN. - * config/obj-ieee.c: Likewise. - * config/tc-sh.c: Fix comment typos. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - * config/tc-h8300.c (build_bytes): Assemble ldmac correctly. - -2000-06-24 DJ Delorie <dj@cygnus.com> - - * config/tc-i386.c (md_estimate_size_before_relax): Revert - more changes from Sept 1999 - (tc_i386_fix_adjustable): ditto - (md_apply_fix3): ditto - -2000-06-24 Frank Ch. Eigler <fche@redhat.com> - - * cgen.c (expr_jmp_buf_p): New validity flag for expr_jmp_buf. - (gas_cgen_parse_operand): Set it around expression() call. - (gas_cgen_md_operand): Test for it before longjmp(). - -2000-06-24 Kazu Hirata <kazu@hxi.com> - - * config/tc-h8500.c: Remove all uses of DEFUN. - * config/tc-sh.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - - * config/tc-h8500.c: Fix typos in comments. - -2000-06-23 Frank Ch. Eigler <fche@redhat.com> - - * expr.c (operand): Permit $hex literals if LITERAL_PREFIXDOLLAR_HEX - is defined. - -2000-06-23 matthew green <mrg@redhat.com> - - * expr.c (operand): Do not as_bad() if RELAX_PAREN_GROUPING is - defined. Fix error message for `[' grouping. - -2000-06-22 Kazu Hirata <kazu@hxi.com> - - * config/tc-h8300.c: Fix formatting and comment typos. - -2000-06-22 Timothy Wall <twall@cygnus.com> - - * config/tc-ia64.c (note_register_values): Move premature QP - notation clearing into the appropriate place. - -2000-06-22 Alan Modra <alan@linuxcare.com.au> - - * dep-in.sed: Escape literal `.'s on patterns. Trim off `../' - first before anything else. Add bin-bugs.h, emul.h and progress.h - Sort list of files as for $(OBJS) in Makefile.am. - - * Makefile.am (DEP): grep for leading `/' in DEPA, and fail if we - find one. Remake dependencies. - ($(OBJS)): Add bin-bugs.h, emul.h, and progress.h Sort the list. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - - * config/tc-i386.c (i386_displacement): Don't assume a constant - displacement is necessarily 16 bits when in 16 bit code mode. - (md_assemble): Instead size the displacement here after we know - for sure that a .code16gcc operand hasn't automatically added - operand size prefixes. - -2000-06-21 H.J. Lu <hjl@gnu.org> - - * Makefile.am: Rebuild dependency. - * Makefile.in: Rebuild. - -2000-06-21 Kazu Hirata <kazu@hxi.com> - - * config/tc-h8300.c (parse_reg): Make the function static. - (parse_exp): Likewise. - -2000-06-20 DJ Delorie <dj@cygnus.com> - - * config/tc-i386.c (tc_i386_fix_adjustable): Revert change from - Sept 1999; RVA relocs need to be treated more like DIR32 relocs - for cygwin import libraries to work properly. - -2000-06-20 H.J. Lu <hjl@gnu.org> - - * Makefile.am: Rebuild dependency. - * Makefile.in: Rebuild. - * configure: Likewise. - * doc/Makefile.in: Likewise. - -2000-06-20 Timothy Wall <twall@cygnus.com> - - * doc/internals.texi (CPU backend): Add @itemx for - TC_START_LABEL_WITHOUT_COLON. - * doc/c-tic54x.texi: New. - * doc/as.texinfo: Add tic54x features and include primary tic54x - documentation file. - * doc/all.texi: Add C54X. - * doc/Makefile.am (CPU_DOCS): Add c-tic54x.texi. - * doc/Makefile.in: Regenerate. - * configure.in: Add tic54x and define LIBM for tic54x. - * configure: Regenrate. - * config/tc-tic54x.[ch]: New. - * config/obj-coff.h: Add tic54x. - * Makefile.am: (CPU_TYPES): Add tic54x. - (TARGET_CPU_CFILES): Add 'tc-tic54x.c'. - (TARGET_CPU_HFILES): Add 'tc-tic54x.h'. - (as_new_LDADD): Add $(LIBM). - * Makefile.in: Regenerate. - -2000-06-18 Stephane Carrez <stcarrez@worldnet.fr> - - * doc/Makefile.am (CPU_DOCS): Added 68hc11 file. - * doc/c-m68hc11.texi: Document 68HC11 and 68HC12 port. - * doc/as.texinfo: Likewise. - - * configure, Makefile.in: Regenerate. - * configure.in (emulations): Recognize m6811 and m6812. - * Makefile.am (CPU_TYPES, TARGET_CPU_CFILES, TARGET_CPU_HFILES): - Added files for 68hc11 and 68hc12 assembler. - * config/tc-m68hc11.c: Assembler for 68hc11 and 68hc12. - * config/tc-m68hc11.h: Header definition for that assembler. - -2000-06-18 Nick Clifton <nickc@redhat.com> - - * symbols.c (resolve_symbol_value): Use bfd_octets_per_byte - instead of OCTETS_PER_BYTE. - - * config/tc-v850.c: Fix compile time warnings. - * config/tc-ppc.c: Fix compile time warnings. - -2000-06-18 H.J. Lu <hjl@gnu.org> - - * configure.in: Don't emulate i386-pc-pe-coff with i386coff. - * configure: Rebuild. - -2000-06-17 Mark Elbrecht <snowball3@bigfoot.com> - - * config/obj-coff.c (obj_coff_weak): Typo fix: Change BFD_ASSEMLER - to BFD_ASSEMBLER. - -2000-06-16 Nick Clifton <nickc@cygnus.com> - - * config/tc-mips.c (md_parse_option): Accept RM5200,RM5230, - RM5231, RM5261, RM5721 and RM7000 as r5000 cpu variants. - - * doc/c-mips.texi: Document newly accepted cpu variants. - -2000-06-15 Ulf Carlsson <ulfc@engr.sgi.com> - - * config/tc-mips.h: Remove definition of ONLY_STANDARD_ESCAPES. - -2000-06-13 Ulf Carlsson <ulfc@engr.sgi.com> - - * macro.c (getstring): Make it possible to escape the quote - character. - -Tue Jun 13 20:58:28 2000 Catherine Moore <clm@redhat.com> - - * config/tc-hppa.c (pa_export): Weak symbols can be global. - -2000-06-13 H.J. Lu <hjl@gnu.org> - - * configure: Regenerate. - -2000-06-09 Alan Modra <alan@linuxcare.com.au> - - * app.c (do_scrub_begin): Don't default lex[';'] as a line - separator. - * doc/internals.texi (line_separator_chars): Semicolon is no - longer a default. Mention null and newline as defaults. - - * read.c (is_end_of_line): Remove ifdef TC_HPPA. - - * config/tc-i386.h (line_separator_chars): Explicitly mention `;' - * config/tc-i860.h (line_separator_chars): Likewise. - * config/tc-h8300.c (line_separator_chars): Likewise. - * config/tc-i960.c (line_separator_chars): Likewise. - * config/tc-m68k.c (line_separator_chars): Likewise. - * config/tc-mips.c (line_separator_chars): Likewise. - * config/tc-ns32k.c (line_separator_chars): Likewise. - * config/tc-sparc.c (line_separator_chars): Likewise. - * config/tc-vax.c (line_separator_chars): Likewise. - - * config/tc-h8300.c (comment_chars): Use string initialiser. - * config/tc-i960.c (line_comment_chars): Likewise. - * config/tc-z8k.c (comment_chars, line_comment_chars, - line_separator_chars): Likewise. - - * config/tc-arm.c (line_separator_chars): Always use `;', not just - for TE_LINUX. - -2000-06-08 Nick Clifton <nickc@cygnus.com> - - * config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value - for size 1 fixes. - -2000-06-08 David O'Brien <obrien@FreeBSD.org> - - * configure.in (VERSION): Update to show this is the CVS mainline. - -2000-06-08 Matthew Jacob <mjacob@feral.com> - - * config/tc-alpha.c (md_undefined_symbol): Properly understand that - $at is the integer register $r28, vs. both $r28 and the floating - point register $f28. - -2000-06-08 James E. Wilson <wilson@cygnus.com> - - * config/tc-ia64.c (generate_unwind_image): Call ia64_flush_insns. - (dot_endp): Don't call ia64_flush_insns. - (emit_one_bundle): Don't delete prologue/body records from - unwind_record list in first loop. Rewrite second loop to account for - this. - -2000-06-07 David Mosberger <davidm@hpl.hp.com> - - * config/tc-ia64.c: Add missing prototypes. - (generate_unwind_image): Cast argument to output_unw_records call. - -Wed Jun 7 22:44:14 2000 Denis Chertykov <denisc@overta.ru> - - * config/tc-avr.c (avr_operand): fix the formatting of the comment. - -Wed Jun 7 21:26:15 2000 Denis Chertykov <denisc@overta.ru> - - * config/tc-avr.c (AVR_ISA_???): moved to include/opcode/avr.h - (REGISTER_P): likewise. - (avr_opcodes): uses include/opcode/avr.h - (avr_operand): enable ld r,Z or st r,Z for at90s1200. - -2000-06-04 Alan Modra <alan@linuxcare.com.au> - - * read.c (is_end_of_line): No ';' for TC_HPPA. Add missing - initializers too. - -2000-06-03 H.J. Lu <hjl@gnu.org> - - * read.c (is_end_of_line): Put back `;'. - -2000-06-03 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (md_shortopts): Remove 'm', add 'q' to non-elf. - -2000-06-01 Alan Modra <alan@linuxcare.com.au> - - * expr.c (operand): Test is_end_of_line outside switch to catch - line separator chars that are also operators. - (operator): Return O_illegal for line separator chars. - - * read.c (is_end_of_line): Use 1 instead of 99. Don't set `;' - entry (or `!' entry for TC_HPPA). - - * config/tc-arm.c (my_get_float_expression): Cast to unsigned char - before indexing is_end_of_line. Remove redundant check for '\0'. - (fp_op2): Likewise. - * config/tc-h8500.c (md_assemble): Likewise. - * config/tc-mcore.c (md_assemble): Likewise. - * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. - (md_atof): Likewise - - * config/tc-m88k.c (s_bss): Cast to unsigned char before indexing - is_end_of_line. - * config/tc-mcore.c (mcore_cons): Likewise. - (mcore_float_cons): Likewise. - (mcore_stringer): Likewise. - * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. - -2000-06-01 Scott Bambrough <scottb@netwinder.org> - - * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly. - -2000-05-29 Nick Clifton <nickc@cygnus.com> - - * config/tc-sh.c: Fix compile time warning messages. - - * config/tc-mips.c: Fix compile time warning messages. - -2000-05-29 Philip Blundell <philb@gnu.org> - - * doc/as.texinfo: Update copyright dates. - (Local Labels): Delete misplaced mention of ARM. - * NEWS: Mention ARM ELF support. - -2000-05-27 Alexandre Oliva <aoliva@cygnus.com> - - * config/tc-mn10300.c (md_assemble): Copy size to real_size before - it is modified, and use the real_size to compute the frag address - for dwarf2 line info. - -2000-05-27 Alan Modra <alan@linuxcare.com.au> - - * Makefile.am (DEP, DEP1, dep, dep-in, dep-am): Use a better sed - line-matching scheme to cope with automake moving variables around. - ($(TARG_CPU_O)): Remove dependency on TARG_CPU_DEP_@target_cpu_type@ - * Makefile.in: Regenerate. - -2000-05-26 Jakub Jelinek <jakub@redhat.com> - - * config/tc-sparc.c (sparc_relax): New. - (md_longopts): Add -relax and -no-relax options. - (md_parse_options, md_show_usage): Likewise. - (md_apply_fix3): Optimize tail call into branch always if possible. - -Thu May 4 15:27:07 2000 Donald Lindsay <dlindsay@cygnus.com> - - * config/tc-d10v.c (write_2_short, parallel_ok, md_assemble, - d10v_cleanup) implement Mitsubishi's newly explained branch-packing - rules, with warning when a GAS statement specifies a packing that - will result in an instruction being squashed. - Added typdef packing_type and enumerals, changed various integer - literals to use the enumerals. - -2000-05-24 David Mosberger <davidm@hpl.hp.com> - - * config/tc-ia64.c (dot_restorereg_p): New function. - (md_pseudo_table): Add restorereg.p. - (output_X3_format): Fix typo: record type should be UNW_X3, not UNW_X1. - (output_X4_format): Fix typo: record type should be UNW_X4, not UNW_X2. - - * config/tc-ia64.h (unw_record_type): Add unwabi. - (unw_r_record): Rename member MASK to GRMASK. Add sub-structure - called MASK with members for imask, and the masks produced by - fr_mem, gr_mem, br_mem, and frgr_mem. - (unw_p_record): Add members ABI and CONTEXT. - (unw_x_record): Add member AB. - * config/tc-ia64.c (enum reg_symbol): Add REG_PSP and REG_PRIUNAT - as pseudo-register for use during unwind info generation. - (AR_PFS, AR_LC): New macros. - (enum pseudo_type): Add PSEUDO_FUNC_REG to permit declaring registers - whose names start with an at sign (as in "@priunat"). - (pseudo_func): Add "svr4", "hpux", "nt" constants and "priunat" - register. - (unwind_list, unwind_tail, current_unwind_entry, proc_start, - proc_end, unwind_info, personality_routine): Consolidate into - "unwind" structure to reduce offset-table use. Add member - NEXT_SLOT_NUMBER to track the slot number for the next instruction - to be emitted. - (output_R1_format, output_R3_format, output_P3_format, - output_P6_format): Initialize R with zero to reduce compiler warnings. - (output_P7_format): Ditto. Add `default' branch to switch - statement to reduce compiler warnings. - (output_P8_format, output_B1_format, output_B4_format): Ditto. - (output_P4_format): Rename 2nd & 3rd arg to IMASK and IMASK_SIZE. - (format_ab_reg): Rename from format_a_b_reg. Merge A and B args - into single argument. - (output_X1_format, output_X3_format): Initialize R with zero to reduce - compiler warnings. Merge A and B args into single argument. - (output_X2_format, output_X4_format): Remove unused variable R. Merge - A and B args into single argument. - (free_record): Removed (wasn't used). - (free_list_records): Also free imasks in prologue records. - (output_prologue, output_prologue_gr): Initialize mask bits to zero. - (output_spill_mask): Remove. - (output_unwabi): New function. - (output_epilogue, output_label_state, output_copy_state): Call - alloc_record. - (output_spill_psprel, output_spill_sprel, output_spill_psprel_p, - output_spill_sprel_p, output_spill_reg, output_spill_reg_p): Add AB - argument. - (process_one_record): New locals FR_MASK and GR_MASK. Ignore - gr_mem, fr_mem, br_mem, and frgr_mem records and instead emit them - as part of handling the prologue records. Emit region's imask if - we have one. Handle unwabi, epilogue, label_state, copy_state, - spill_psprel, spill_sprel, spill_reg, spill_psprel_p, - spill_sprel_p, and spill_reg_p records. - (set_imask, count_bits, slot_index): New function. - (fixup_unw_records): Fix region size computation. Handle - epilogue, spill_reg, spill_sprel, spill_psprel, spill_reg_p, - spill_sprel_p, and spill_psprel_p records. Merge mask bits of - frgr_mem, fr_mem, gr_mem, br_mem on a per-region basis and - set_imask accordingly. Update imask for gr_gr, and br_gr records. - (convert_expr_to_ab_reg, convert_expr_to_xy_reg): New function. - (dot_save): Use manifest constants for applicaton registers. - Handle REG_PR and REG_PRIUNAT. - (dot_restore): Don't just ignore it. - (dot_restorereg): New function.. - (generate_unwind_image): Ensure unwind info is a multiple of eight - bytes, not just four bytes. - (dot_handlerdata, dot_unwentry): Demand empty rest of line. - (dot_altrp): Don't just ignore it. - (dot_savemem): New function. Replaces dot_savesp() and - dot_savepsp(). Use manifest constants for applicaton registers. - Handle REG_PR and REG_PRIUNAT. - (dot_savef): Simplify. - (dot_saveb): Support generation of br_gr. - (dot_spillreg, dot_spillmem, dot_spillreg_p, dot_spillmem_p, - dot_label_state, dot_copy_state): New function. - (dot_unwabi): Don't just ignore it. - (md_pseudo_table): Add restorereg, spillreg, spillsp, spillpsp, - spillreg.p, spillsp.p, spillpsp, label_state, copy_state, - unwabi, vframesp, and vframepsp. Fix typo alprp->altrp. - (emit_one_bundle): Set slot number for prologue/body records - *before* emitting the first insn. - (emit_one_bundle): Set UNWIND.NEXT_SLOT_NUMBER. - (md_begin): Declare "psp" pseudo-register. - (md_operand): Handle PSEUDO_FUNC_REG. Fix printing of error message - so we don't get segfault. - (output_psp_sprel): Output sp/psp relative offsets as 4-byte word - counts as required per SW Conventions manual - (output_rp_psprel, output_rp_sprel, output_pfs_psprel,output_pfs_sprel, - output_preds_psprel, output_preds_sprel, output_spill_base, - output_unat_psprel, output_unat_sprel, output_lc_psprel, - output_lc_sprel, output_fpsr_psprel, output_fpsr_sprel, - output_priunat_psprel, output_priunat_sprel, output_bsp_psprel, - output_bsp_sprel, output_bspstore_psprel, output_bspstore_sprel, - output_rnat_psprel, output_rnat_sprel, output_spill_psprel, - output_spill_sprel, output_spill_psprel_p, output_spill_sprel_p):Ditto. - (dot_vframe): Implement. - (dot_vframesp, dot_vframepsp): New function. - -Tue May 23 00:57:05 2000 Hans-Peter Nilsson <hp@axis.com> - - * configure.in (i386-*-freebsd a.out entry): Quote properly. - * configure: Regenerate. - -2000-05-23 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (md_assemble): Pass jump reloc in fr_var... - (md_estimate_size_before_relax): so we can use it here instead of - old kludges. Localise vars to blocks. Comment. - - * frags.c (frag_new): Update fr_var comments. - * frags.h (struct frag): Ditto. - -2000-05-22 Richard Henderson <rth@cygnus.com> - - * config/tc-ia64.c (FUNC_PC_RELATIVE): New. - (pseudo_func): Add pcrel. - (operand_match): Handle IA64_OPND_TGT64. - (build_insn): Likewise. - (md_begin): Initialize pseudo_func[FUNC_PC_RELATIVE]. - (ia64_gen_real_reloc_type): Handle FUNC_PC_RELATIVE. - (fix_insn): Handle all three 64-bit relocation types. - -Mon May 22 22:43:32 2000 Hans-Peter Nilsson <hp@axis.com> - - * obj.h (struct format_ops): New members begin, app_file, - s_set_other, s_set_desc, s_get_type, s_set_type, - separate_stab_sections, init_stab_section. - - * config/obj-multi.h: Update GPL notice to v2. - (obj_begin): New. - (obj_app_file): New. - (S_SET_SIZE): Test s_set_size for NULL before calling. - (S_SET_ALIGN): Similar for s_set_align. - (S_SET_OTHER): New. - (S_SET_DESC): New. - (S_GET_TYPE): New. - (S_SET_TYPE): New. - (SEPARATE_STAB_SECTIONS): New. - (INIT_STAB_SECTION): New. - (EMIT_SECTION_SYMBOLS): New. - (AOUT_STABS) [OBJ_MAYBE_AOUT]: Define. - - * config/obj-elf.h: Update GPL notice to v2. - Mention that this file is included from obj-multi.h. - (obj_begin): Wrap definition in ifndef. - (elf_file_symbol): Constify declaration. - (obj_app_file): Ditto. - (SEPARATE_STAB_SECTIONS, INIT_STAB_SECTION, OBJ_PROCESS_STAB): - Wrap in ifndef SEPARATE_STAB_SECTIONS. - - * config/obj-elf.c (elf_s_set_other): New. - (elf_file_symbol): Constify argument. - (elf_separate_stab_sections): New. - (elf_init_stab_section): New. - (elf_format_ops): Add new members. Remove comma at end. - - * config/obj-ecoff.c (ecoff_separate_stab_sections): New. - (ecoff_format_ops): Add new fields. Remove comma at end. - Mention inconsistency for emit_section_symbols. - - * config/obj-coff.h (c_dot_file_symbol): Constify declaration. - - * config/obj-coff.c (c_dot_file_symbol): Constify argument. - (coff_separate_stab_sections): New. - (coff_format_ops): Add new members. - - * config/obj-aout.c (obj_aout_sec_sym_ok_for_reloc): New. - (obj_aout_s_set_other): New. - (obj_aout_s_set_desc): New. - (obj_aout_s_get_type): New. - (obj_aout_s_set_type): New. - (obj_aout_separate_stab_sections): New. - (aout_format_ops): New members added. Use obj_aout_process_stab, - not 0. Use obj_aout_sec_sym_ok_for_reloc, not 0. - (obj_aout_frob_symbol): Add ATTRIBUTE_UNUSED to args as - appropriate. - (obj_aout_line, obj_aout_weak, obj_aout_type): Ditto. - -2000-05-22 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (tc_i386_fix_adjustable): Prevent adjustment - for OBJ_MAYBE_ELF too. Use S_IS_EXTERNAL instead of S_IS_EXTERN. - (md_estimate_size_before_relax): Ensure jumps to weak and - externally visible symbols are relocatable. - -Sat May 20 16:41:55 2000 Hans-Peter Nilsson <hp@axis.com> - - * stabs.c (aout_process_stab): Make global. - (s_desc): Add ATTRIBUTE_UNUSED to args as appropriate. - * read.h (aout_process_stab): Declare. - - * configure.in (EMULATIONS) [i386aout, i386coff, i386elf]: - Generalize to *aout, *coff *elf. - * configure: Regenerated. - - * doc/internals.texi (Object format backend): Say - SEPARATE_STAB_SECTIONS needs to be nonzero, not just defined. - - * Makefile.am (TARG_ENV_HFILES): Delete te-multi.h. - * Makefile.in: Regenerated. - -2000-05-19 Catherine Moore <clm@cygnus.com> - - * cgen.h (GAS_CGEN_MAX_FIXUPS): Check if already defined. - -2000-05-18 Alan Modra <alan@linuxcare.com.au> - - * config/tc-hppa.c (md_apply_fix): Mask out immediate bits of - instruction to reflect change in re_assemble_*. - -Thu May 18 10:52:14 2000 Jeffrey A Law (law@cygnus.com) - - * configure.in (hppa-*-hpux11*): If the cpu is hppa*64*, then - build PA64 ELF tools. - * configure: Rebuilt. - -2000-05-17 Alan Modra <alan@linuxcare.com.au> - * Makefile.am: Regenerate dependencies. - * Makefile.in: Regenerate. - -2000-05-15 Nick Clifton <nickc@cygnus.com> - - * config/tc-arm.c (struct asm_psr): Add boolean field - distinguishing between CSPR and SPSR. Rename 'number' field - to 'field'. - (psrs): Rearrange contents to match new asm_psr structure. - (arm_psr_parse): Move next to psr_required_here. Make it - return an asm_psr structure. - (psr_required_here): Use asm_psr structure returned by - arm_psr_parse. - (do_msr): Reorganise to allow psr_required_here to be called - only once. - (md_undefined_name): Mark 'name' parameter as unused, since - the COFF target does not use it. - -2000-05-14 David O'Brien <obrien@FreeBSD.org> - - * config/te-386bsd.h: Clean up comments to adhere to the GNU coding - standards. - * config/te-aux.h: Likewise. - * config/te-dpx2.h: Likewise. - * config/te-go32.h: Likewise. - * config/te-hp300.h: Likewise. - * config/te-hppa.h: Likewise. - * config/te-i386aix.h: Likewise. - * config/te-ic960.h: Likewise. - * config/te-interix.h: Likewise. - * config/te-nbsd532.h: Likewise. - * config/te-pc532mach.h: Likewise. - * config/te-ppcnw.h: Likewise. - * config/te-psos.h: Likewise. - * config/te-sparcaout.h: Likewise. - * config/te-sun3.h: Likewise. - * config/te-sysv32.h: Likewise. - -2000-05-14 Alan Modra <alan@linuxcare.com.au> - - * config/tc-h8300.c (do_a_fix_imm): Don't rely on `short' being 16 - bits. Instead explicitly mask and sign extend. Do the 8 bit mask - and sign extend without an if statement. - (build_bytes): Likewise. - -2000-05-14 Kazu Hirata <kazu@hxi.com> - - * config/tc-h8300.c (do_a_fix_imm): Output a reloc for no - X_add_symbol L_32 case. - -2000-05-14 David O'Brien <obrien@FreeBSD.org> - - * config/te-freebsd.h: New file. - -2000-05-13 Alan Modra <alan@linuxcare.com.au> - - * asintl.h (gettext, dgettext, dcgettext, textdomain, - bindtextdomain): Replace defines with those from intl/libgettext.h - to quieten gcc warnings. - - * NEWS: Mention x86 .arch and -q. - - * config/tc-i386.c (quiet_warnings): New. - (md_assemble): Use quiet_warnings. - (md_parse_option): Set quiet_warnings from -q. - (md_show_usage): Mention -q, delete -m. - (flag_do_long_jump): Delete. - (md_parse_option): Remove -m. - (md_show_usage): Remove -m. - (md_create_long_jump): Remove useless flag_do_long_jump code. - - * as.c (parse_args): In case OPTION_DEFSYM, use a valueT to hold - the symbol value, and use bfd_scan_vma if BFD_ASSEMBLER. - -2000-05-13 Alan Modra <alan@linuxcare.com.au> - Alexander Sokolov <robocop@netlink.ru> - - * doc/c-i386.texi (i386-Arch): New section. - (i386-Syntax): Mention .intel_syntax and .att_syntax. - - * config/tc-i386.c (cpu_arch_name, cpu_arch_flags): New. - (smallest_imm_type): Use smallest opcode for shift by one if cpu - architecture has been given and is not 486. - (set_cpu_arch): New. - (md_pseudo_table): Add .arch. - (md_assemble): Warn if cpu architecture has been given and an - unsupported instruction. - - * config/tc-i386.h (SMALLEST_DISP_TYPE): Delete. - Move operand_types bit defines after relevant template field. - (template): Add cpu_flags. - (Cpu*): Define. - (arch_entry): New. - -2000-05-12 Alexandre Oliva <aoliva@cygnus.com> - - * config/tc-mn10300.h (md_end): Define. - (mn10300_finalize): Declare. - * config/tc-mn10300.c: Include dwarf2dbg.h. - (debug_line): Define. - (md_assemble): Generate dwarf2 line info. - (mn10300_finalize): New function. Finalize dwarf2 info. - -2000-05-11 Ulf Carlsson <ulfc@engr.sgi.com> - - * config/tc-mips.c (md_estimate_size_before_relax): Use the - external version of the relocation for weak symbols. - -2000-05-08 David Mosberger <davidm@hpl.hp.com> - - * config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed - frame size in units of 16 bytes, as required per SW Conventions manual. - (output_unw_records): Output info-block header as a dword to get - byte-order right. - -2000-05-08 Alan Modra <alan@linuxcare.com.au> - - * as.h: #include "file", not <file> on files from ../include. - (as_abort, as_fatal): Add ATTRIBUTE_NORETURN. - * config/tc-m68k.c (m68k_ip): Fix signed/unsigned warnings. - (md_convert_frag): Add ATTRIBUTE_UNUSED. - (tc_coff_symbol_emit_hook): Ditto. - (OPTCOUNT): Cast to int to avoid compiler warning. - (md_begin): Fix signed/unsigned warnings. - -2000-05-08 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * config/tc-m68k.c (md_convert_frag_1): Abort if we end up in the - ABRANCH LONG case for a conditional branch on a 68000. - (md_estimate_size_before_relax): Likewise. Also handle - flag_short_refs correctly for ABRANCH, BCC68000, and DBCC. - (m68k-ip: case ABSL): Relax absolute references to 16-bit - PC-relative on all CPUs. - (md_estimate_size_before_relax): Likewise. - -2000-05-04 Alan Modra <alan@linuxcare.com.au> - - * as.c (parse_args): Just mention current year in printed - copyright message. - -2000-05-03 J.T. Conklin <jtc@redback.com> - - * config/tc-ppc.c (pre_defined_registers): Add entries for vector - unit registers. - (md_parse_option): Recognize -m7400. - -2000-05-03 Ian Lance Taylor <ian@zembu.com> - - * config/atof-ieee.c (gen_to_words): When adding carry back in, - don't permit lp to become less than the words array. - -2000-05-03 Rodney Brown <RodneyBrown@pmsc.com> - - config/tc-mcore.c (md_apply_fix3): BFD_RELOC_MCORE_PCREL_IMM11BY2 - Fix little-endian case. - -2000-05-03 David O'Brien <obrien@NUXI.com> - - * as.c (parse_args): Update copyright. - -2000-05-03 Mark Elbrecht <snowball3@bigfoot.com> - - * gas/config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 - for the .bss section too. - -2000-05-02 Alan Modra <alan@linuxcare.com.au> - - * configure.in: Set em=linux for hppa-*-linux. - * configure: Regenerate. - * doc/Makefile.in: Regenerate with correct automake. - - * frags.c (frag_grow): Sanity check chunk_size. - - * config/obj-elf.h: #include "bfd.h" not <bfd.h> - * config/obj-som.h: Likewise. - * config/obj-ieee.h: Likewise. - - * config/tc-hppa.h: Test BFD_ARCH_SIZE, not BFD64. - - * config/tc-hppa.c (log2): Only compile when OBJ_SOM. - (md_pseudo_table): Fully initialise OBJ_ELF cases. - (fix_new_hppa): Add ATTRIBUTE_UNUSED to args as appropriate. - (pa_ip): low_sign_unext now returns via function value. Use - re_assemble_* instead of dis_assemble_* and - INSERT_FIELD_AND_CONTINUE combination. Don't call sign_unext - unnecessarily. - (md_convert_frag): Add ATTRIBUTE_UNUSED to args as appropriate. - (md_section_align, md_parse_option, md_show_usage, - md_undefined_symbol, pa_align, pa_block, pa_brtab, pa_try, - pa_callinfo, pa_code, pa_comm, pa_end, pa_enter, pa_entry, - pa_exit, pa_export, pa_import, pa_label, pa_leave, pa_level, - pa_origin, pa_param, pa_proc, pa_procend, pa_space, pa_spnum, - pa_version, pa_compiler, pa_copyright, pa_data, pa_fill, pa_lsym, - pa_text): Likewise. - (md_apply_fix): Change type of new_val to offsetT. Delete w1, w2, - w, resulti. Add insn, val. Move bfd_get_32 and bfd_put_32 - outside of switch. Correct mask and shifting errors in case 10 - and case -11. In case 21, compare against signed range to suit - hppa_field_adjust changes. In case 12, use re_assemble_12. In - case 17 and case 22, use offsetT variable to properly check range. - Use re_assemble_* here too. - (evaluate_absolute): Change type of value to offsetT. Call - hppa_field_adjust to do the work for us. - (pa_parse_cmpb_64_cmpltr): Delete save_s. - (pa_parse_cmpib_64_cmpltr): Ditto. - (pa_build_unwind_subspace): Delete unused var subseg. Change type - of i to unsigned int. - (pa_type_args): Conditionally declare symbol if OBJ_SOM. - (pa_end_of_source): Return type is void. - -Mon May 1 08:54:23 2000 Catherine Moore <clm@cygnus.com> - - * macro.c (macro_expand_body): Don't prepend macro number with zeroes. - -Mon May 1 14:19:39 2000 Denis Chertykov <denisc@overta.ru> - - * config/tc-avr.c: ATTRIBUTE_UNUSED added to the necessary places. - More comments added. - (md_begin): Removed "construct symbols for each register name". - Because register names conflicts with GCC generated function - names. - (avr_operand): Now constant numbers can be used as a register - identifiers (0 as r0, 31 as r31). - (md_assemble): use skip_space () before parsing instruction - operands. - -2000-05-01 Alan Modra <alan@linuxcare.com.au> - - * configure.in: Set bfd_gas=yes on i386-*-pe and i386-*-nt* to - ensure all pe targets use bfd. Remove unnecessary bfd_gas=yes on - arm-*-netbsd* and arm-*-wince as this is set for all arm*. - * configure: Regenerate. - -2000-04-29 Andreas Jaeger <aj@suse.de> - - * as.h: Correctly check GCC version. - -2000-04-26 David O'Brien <obrien@FreeBSD.org> - - * doc/as.1: Fix unbalanced brackets. - - * config/tc-i386.c (comment_chars): Don't use '/' as comment start if - TE_FreeBSD. - (line_comment_chars): Set to '/' if TE_FreeBSD. - -Tue Apr 25 11:02:02 2000 Jeffrey A Law (law@cygnus.com) - - * configure.in: Configury support for PA64 (currently disabled). - * configure: Rebuilt. - -2000-04-25 Machida Hiroyuki <machida@sm.sony.co.jp> - - * config/tc-mips.c (s_change_sec): Use record_alignment, not - bfd_set_section_alignment. - -2000-04-25 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (offset_in_range): Ensure shift counts are less - than 32. - -2000-04-24 Nick Clifton <nickc@cygnus.com> - - * doc/c-arm.texi (ARM Directives): Document behaviour of .align 0. - * doc/as.texinfo (Align): Include arm and strongarm in list of - targets that have the second form of the behaviour of the .align - directive. - -2000-04-24 Mark Klein <mklein@dis.com> - - * obj-som.c: Terminate obj_pseudo_table. - -Mon Apr 24 15:21:11 2000 Clinton Popetz <cpopetz@cygnus.com> - - * as.c (parse_args): Allow md_parse_option to override -a listing - option. - * config/obj-coff.c (add_lineno): Change type of offset parameter - from "int" to "bfd_vma." - * config/tc-ppc.c (md_pseudo_table): Add "llong" and "machine." - (ppc_mach, ppc_subseg_align, ppc_target_format): New. - (ppc_change_csect): Align correctly for XCOFF64. - (ppc_machine): New function, which discards "ppc_machine" line. - (ppc_tc): Cons for 8 when code is 64 bit. - (md_apply_fix3): Don't check operand->insert. Handle 64 bit - relocations. - (md_parse_option): Handle -a64 and -a32. - (ppc_xcoff64): New. - * config/tc-ppc.h (TARGET_MACH): Define. - (TARGET_FORMAT): Move to function. - (SUB_SEGMENT_ALIGN): Use ppc_subseg_align. - -Sun Apr 23 16:45:45 2000 Denis Chertykov <denisc@overta.ru> - - * config/tc-avr.c: New AVR_ISA_ defined. - (md_assemble): Handle opcodes with optional operands (lpm,elpm). - (avr_operand): Handle 'a', 'v' and 'z' constraint letters needed - for `fmul', `movw' and `lpm R,Z' instructions. - (avr_operands): Warn if current opcode is a two-word instruction - and previous opcode was cpse/sbic/sbis/sbrc/sbrs. - (avr_opcodes): New commands added. - (REGISTER_P): Check 'a' and 'v' constraint letters. - (mcu_types): New MCU added. - -2000-04-22 Timothy Wall <twall@cygnus.com> - - * config/tc-ia64.c (pseudo_func[]): Add new "nat" entry equivalent - to "natval". - (operand_match): Conditionally insert default bit values for IMMU9. - -2000-04-14 Matthew Green <mrg@cygnus.com> - - * configure.in: Add NetBSD/sparc ELF and NetBSD/sparc64 support. - * configure: Rebuilt. - -Fri Apr 21 14:29:43 2000 Jeffrey A Law (law@cygnus.com) - Jason Eckhardt <jle@cygnus.com> - - * config/tc-hppa.c (md_apply_fix): Handle new PA2.0 formats. - - * config/tc-hppa.c (CHECK_ALIGN): New macro. - Added handling of new operand types l,y,&,fe,fE,fx. - -Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com> - David Mosberger <davidm@hpl.hp.com> - Timothy Wall <twall@cygnus.com> - Andrew MacLeod <amacleod@cygnus.com> - Jim Wilson <wilson@cygnus.com> - - * Makefile.am (CPU_TYPES): Add ia64. - (TARGET_CPU_CFILES): Add config/tc-ia64.c. - (TARGET_CPU_HFILES): Add config/tc-ia64.h. - * Makefile.in: Rebuild. - * app.c (do_scrub_chars): Handle DOUBLESLASH_COMMENTS. - * configure: Rebuild. - * configure.in: Recognize ia64 as cpu type. Set bfd_gas. - (ia64-*-elf*, ia64-*-linux-gnu*): New targets. - * expr.c (expr): Handle md_optimize_expr. - * read.c (LEX_HASH): Add comment. - * config/tc-ia64.c, config/tc-ia64.h: New files. - -2000-04-21 Richard Henderson <rth@cygnus.com> - - * config/tc-d30v.c (write_2_short): Disregard opcode1->ecc when - bundling a non-delayed branch type instruction. - -2000-04-20 Alexandre Oliva <aoliva@cygnus.com> - - * config/tc-mn10300.c (HAVE_AM30): Define. - (md_assemble): Use it. - -2000-04-19 Alan Modra <alan@linuxcare.com.au> - - * config/obj-elf.c (obj_elf_change_section): Check for changed - section attributes. - - * Makefile.am: (CPU_MULTI_VALID): Remove. - (MULTI_CPU_TYPES): Define. - (MULTI_CPU_OBJ_VALID): Define. - (DEPTC): Use the above. - (DEPOBJ): Same here. - (DEP2): And here. - Regenerate dependencies. - * Makefile.in: Regenerate. - -2000-04-19 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * Makefile.am (YACC, LEX): Get them from configure. - -2000-04-18 H.J. Lu (hjl@gnu.org) - - * config/tc-i386.c (offset_in_range): Use addressT instead of - bfd_vma for non-bfd assemblers. - -2000-04-17 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (offset_in_range): Sign extend val so BFD64 - doesn't give spurious errors. - -2000-04-14 Michael Sokolov <msokolov@ivan.Harhan.ORG> - - * as.h (SEEK_SET): Define if undefined. - -2000-04-13 Alan Modra <alan@linuxcare.com.au> - - * config/tc-arm.c (md_apply_fix3): Don't use UL suffix on - constants, and don't assume offsetT is 32 bits. - -2000-04-12 Andrew Cagney <cagney@b1.cygnus.com> - - * config/tc-d10v.h: Include "write.h" to get definition of fixS. - (md_pcrel_from_section): Add prototype. - (d10v_fix_adjustable): Add prototype. - (d10v_force_relocation): Replace 'struct fix' with 'fixS'. - - * config/tc-d10v.c (md_apply_fix3): Add paren around &&. - -2000-04-12 Nick Clifton <nickc@cygnus.com> - - * config/tc-d10v.c (find_opcode): Correctly calculate position of - symbol in frag chain. - -2000-04-10 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (fits_in_signed_byte): Change arg to offsetT. - (fits_in_unsigned_byte, fits_in_unsigned_word): Ditto. - (fits_in_signed_word, smallest_imm_type): Ditto. - (md_assemble): Use an offsetT var to hold offsetT values, not a - long. - (offset_in_range): New. - (md_assemble): Use it. - (md_convert_frag): Change type of target_address, opcode_address, - and displacement_from_opcode_start to offsetT. - (md_create_short_jump): Change type of offset to offsetT. - (md_create_long_jump): Ditto. - (md_apply_fix3): Use -4, not 0xfffffffc for BFD_RELOC_386_PLT32. - (md_chars_to_number): Remove. - (output_invalid): Remove duplicate prototype. - -2000-04-09 Nick Clifton <nickc@cygnus.com> - - * Makefile.am (CPU_TYPES): Add 'avr'. - (TARGET_CPU_CFILES): Add 'tc-avr.c'. - (TARGET_CPU_HFILES): Add 'tc-avr.h'. - - * Makefile.in: Regenerate. - - * doc/as.texinfo: Add M32R documentation. - -Fri Apr 7 15:56:57 2000 Andrew Cagney <cagney@b1.cygnus.com> - - * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add - --enable-build-warnings option. - * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions. - * Makefile.in, configure: Re-generate. - -2000-04-07 Nick Clifton <nickc@cygnus.com> - - * config/tc-arm.c (md_apply_fix3): Treat BFD_RELOC_ARM_PCREL_BLX - in the same way as BFD_RELOC_ARM_PCREL_BRANCH, and - BFD_RELOC_THUMB_PCREL_BLX lie BFD_RELOC_THUMB_PCREL_BRANCH. - (tc_gen_reloc): Accept BFD_RELOC_{ARM|THUMB}_PCREL_BLX. - (arm_force_relocation): Force relocations for - BFD_RELOC_{ARM|THUMB}_PCREL_BLX as well. - -Wed Apr 5 22:26:32 2000 J"orn Rennecke <amylaar@cygnus.co.uk> - - * config/tc-sh.c (get_operands): There's no third operand if the - first operand is an immediate. - -Wed Apr 5 22:07:19 2000 J"orn Rennecke <amylaar@cygnus.co.uk> - - * config/tc-sh.c (immediate): Delete. - (sh_operand_info): Add immediate member. - (parse_reg): Use A_PC for pc. - (parse_exp): Add second argument 'op'. All callers changed. - (parse_at): Expect pc to be coded as A_PC. - Use immediate field in *op. - (insert): Add fourth argument 'op'. All callers changed. - (build_relax): Add second argument 'op'. All callers changed. - (insert_loop_bounds): New function. - (build_Mytes): Remove DISP_4. - Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT. - (assemble_ppi): Use immediate field in *operand. - (sh_force_relocation): Handle BFD_RELOC_SH_LOOP_{START,END}. - (md_apply_fix): Likewise. - (tc_gen_reloc): Likewise. Check for a pcrel BFD_RELOC_SH_LABEL. - -Wed Apr 5 06:35:45 2000 Alexandre Oliva <oliva@lsd.ic.unicamp.br> - - * config/tc-sparc.c (sparc_ip): Avoid string pasting. - -Tue Apr 4 19:27:50 2000 Hans-Peter Nilsson <hp@axis.com> - - * internals.texi (CPU backend): Document - TC_CHECK_ADJUSTED_BROKEN_DOT_WORD. - -2000-04-04 Alan Modra <alan@linuxcare.com.au> - - * po/gas.pot: Regenerate. - - * as.c (show_usage): Restore translated part of bug string. - * gasp.c (show_usage): Likewise. - - * Makefile.am (MKDEP): Use gcc -MM rather than ../mkdep. - (DEP): Quote when passing vars to sub-make. Use "mv -f" rather - than move-if-change. - (DEP1): Modify for "gcc -MM". - (DEPTC): Likewise. - (DEPOBJ): Likewise. - (DEP2): Likewise. - (CLEANFILES): Add DEPTCA, DEPOBJA, DEP2a, DEPA. - Update dependencies. - * Makefile.in: Regenerate. - -2000-04-03 Alexandre Oliva <aoliva@cygnus.com> - - * config/tc-mn10300.c (md_pseudo_table): Use constant names. - (md_begin): Likewise. - (HAVE_AM33): New macro. - (md_assemble): Use it. Match r_regs and xr_regs only if - HAVE_AM33. - -2000-04-03 Alan Modra <alan@linuxcare.com.au> - - * as.h: #include "bin-bugs.h" - * as.c (show_usage): Use REPORT_BUGS_TO. - * gasp.c: #include "bin-bugs.h" - (show_usage): Use REPORT_BUGS_TO. - - * config/tc-sparc.c (md_show_usage): Add a trailing newline. - -Mon Apr 3 13:56:03 2000 Hans-Peter Nilsson <hp@axis.com> - - * write.c (write_object_file) [! WORKING_DOT_WORD]: If defined, - call TC_CHECK_ADJUSTED_BROKEN_DOT_WORD for each word after - adjustments. - -2000-04-03 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c (i386_immediate): Don't assume a constant - immediate is necessarily 16 bits when in 16 bit code mode. - (md_assemble): Instead set guess_suffix here after we have checked - registers. - -2000-04-02 Richard Henderson <rth@cygnus.com> - - * config/tc-d30v.c (check_range): Allow signed or unsigned 32-bit - quantities. Correct right shift sign extension. - (build_insn): Make `number' unsigned long. Mask top 6 bits of - 32-bit value when shifting into place. - -2000-04-01 Ian Lance Taylor <ian@zembu.com> - - * app.c: Add ATTRIBUTE_UNUSED as needed. - * config/tc-ppc.c: Likewise. - (ppc_size): Make unsigned long. - (ppc_insert_operand): Add casts to avoid warnings. - -2000-03-31 Nick Clifton <nickc@cygnus.com> - - * config/tc-d10v.h (md_flush_pending_output): Define. - -2000-03-29 Nick Clifton <nickc@cygnus.com> - - * config/tc-sh.h (SEG_NAME): New macro: return the name of a - segment. Works for both BFD_ASSEMBLER and others. - (SUB_SEGMENT_ALIGN): Use SEG_NAME. - -2000-03-29 Nick Clifton <nickc@cygnus.com - - * config/tc-arm.c (tinsns): Add "bal" instruction pattern. - -2000-03-28 Alan Modra <alan@linuxcare.com.au> - - * listing.c (LISTING_LHS_WIDTH): Default depends on - LISTING_WORD_SIZE. - (LISTING_LHS_WIDTH_SECOND): Default to LISTING_LHS_WIDTH. - -2000-03-27 Ian Lance Taylor <ian@zembu.com> - - * config/tc-sh.c (md_show_usage): Use backslash before newline in - string literal. - -2000-03-27 Alan Modra <alan@linuxcare.com.au> - - * config/tc-avr.h (TC_HANDLES_FX_DONE): Define. - - * config/tc-avr.c (mcu_types): Add missing initialiser. - (md_pcrel_from_section): Add prototype. - (avr_operand): Remove redundant test of unsigned < 0. - (avr_cons_fix_new): Ensure exp_mod_pm zero on function exit. - -2000-03-27 Denis Chertykov <denisc@overta.ru> - - * config/tc-avr.c: New file for AVR support. - * config/tc-avr.h: Likewise. - * configure.in: Add AVR support. - * configure: Regenerate. - -2000-03-26 Timothy Wall <twall@cygnus.com> - - * gasp.c (macro_op): Add new argument to check_macro call. - Macro structure definitions moved to macro.h - * sb.h: Add argument to prototype for input_scrub_include_sb. - * input-scrub.c (input_scrub_include_sb): Allow disabling of sb - nesting checks with an additional flag. - (struct input_save): Add flag to indicate whether current sb - should be checked for proper macro/conditional nesting. - (input_scrub_push/pop): Save/restore nest check flag. - (input_scrub_next_buffer): Ditto. Also call end of macro hook if - defined. - * macro.c (check_macro): Allow caller to retrieve parsed macro - information if a pointer is provided. This information may be - used by the new macro hooks. - * macro.h: Update prototype for check_macro. Macro struct - definitions moved here from macro.c/gasp.c. - * read.c (read_a_source_file): Add parameter to check_macro call, - and pass macro info to the macro hook, if defined. - (input_scrub_insert_line): New. Allow insertion of a line of - characters into the input stream. - (input_scrub_insert_file): New. Allow insertion of an arbitrary - file into the input stream. - (s_include): Use input_scrub_insert_file. - * internals.texi: Document new macro hooks. - * as.h: New prototypes added. - -2000-03-26 Alan Modra <alan@linuxcare.com.au> - - * config/tc-i386.c: Don't start any as_bad or as_warn message with - an initial capital letter. - (i386_index_check): Reindent. - -2000-03-19 Nick Clifton <nickc@cygnus.com> - - * config/tc-arm.c (md_apply_fix3): Fix bug detecting overflow of pc - relative branches. - -2000-03-17 Thomas de Lellis <tdel@windriver.com> - - * config/tc-arm.c (do_t_adr): Flag "adr Rd,label" - instruction operand bad if Rd > 7 when generating - thumb instructions. Prevents for example, - "adr r12,label" from silently failing and generating - the wrong instruction. - -2000-03-17 Nick Clifton <nickc@cygnus.com> - - * config/tc-arm.c (md_apply_fix3): Handle same-section relocations - that have a destingation >= 0x400000. - Fix compile time warning messages. - -Thu Mar 16 23:45:16 2000 J"orn Rennecke <amylaar@cygnus.co.uk> - - * config/tc-sh.c (md_begin): When encountering insn that are - not supported by the current arch, only change the name if - its contents are the same as prev_name. - (get_specific): If the the architecture doesn't match, fail. - -Thu Mar 16 21:18:13 2000 J"orn Rennecke <amylaar@cygnus.co.uk> - - * config/tc-sh.c (IDENT_CHAR): Define. - (parse_reg): Use it instead of isalnum. Put r[0..7]_bank operand - matching back where it came from. - -Thu Mar 16 20:58:10 2000 J"orn Rennecke <amylaar@cygnus.co.uk> - - * config/tc-sh.c (md_show_usage): Add description of -dsp. - -2000-03-15 Jonathan Larmour <jlarmour@redhat.co.uk> - - * config/tc-sh.c (parse_reg): Match r[0..7]_bank operands before - normal operands. - -2000-03-15 Kazu Hirata <kazu@hxi.com> - - * config/tc-h8300.c: Add ATTRIBUTE_UNUSED as appropriate. - -Mon Mar 13 22:02:59 2000 Hans-Peter Nilsson <hp@axis.se> - - * expr.c (operand) [case 'f']: When testing if '0f' can start a - floating-point-number, make sure 'f' is in FLT_CHARS. - -Sat Mar 11 00:01:39 2000 Hans-Peter Nilsson <hp@axis.se> - - * read.c (TC_IMPLICIT_LCOMM_ALIGNMENT): New default-definition. - (s_lcomm_internal): Use it. - * doc/internals.texi (CPU backend): Document it. - * config/obj-evax.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Set to 2**3 - bytes. - -2000-03-10 Geoffrey Keating <geoffk@cygnus.com> - - * config/tc-mips.c (mips_ip): Don't put stuff in .rodata - when embedded-pic. - - * config/tc-mips.c (SWITCH_TABLE): The ELF embedded-pic - implementation doesn't have special handling for switch - statements. - (macro_build): Allow for code in sections other than .text. - (macro): Likewise. - (mips_ip): Likewise. - (md_apply_fix): Do pc-relative relocation madness for MIPS ELF. - Don't perform relocs if we will be outputting them. - (tc_gen_reloc): For ELF, just use fx_addnumber for pc-relative - relocations. Allow BFD_RELOC_16_PCREL_S2 relocs when - embedded-pic. - -2000-03-09 Catherine Moore <clm@cygnus.com> - - * config/tc-m32r.c (m32r_fix_adjustable): Look up the - relocation type based on the entry in the fixup structure. - Put S_IS_EXTERN processing back in. - -2000-03-08 H.J. Lu (hjl@gnu.org) - - * Makefile.am (install-exec-tooldir): Depend on - install-exec-bindir for parallel make. - * Makefile.in: Regenerated. - -2000-03-06 Nick Clifton <nickc@cygnus.com> - - * config/tc-m32r.c (struct md_longopts): Add -m32r command line - switch. - (md_parse_option): Parse -m32r command line switch - disable m32rx - compatability. - (md_show_usage): Document new option. - - * doc/Makefile.am (CPU_DOCS): Add c-m32r.texi. - * doc/Makefile.in: Regenerate. - * doc/c-m32r.texi (M32R-Opts): Document new command line switch. - -2000-03-02 Michael Meissner <meissner@redhat.com> - - * config/tc-d30v.c (check_range): Remove code that incorrectly - sign extended values where bits < 32. - -2000-03-02 H.J. Lu (hjl@gnu.org) - - * configure.in: Support --enable-targets=all on ia32. - * configure: Regenerated. - -2000-03-01 Nick Clifton <nickc@cygnus.com> - - * gasp.c (do_align): Remove bogus check of alignment value. - -2000-02-27 Thomas de Lellis <tdel@windriver.com> - - * config/obj-elf.c (elf_frob_symbol): Remove code which when - TC_PPC was defined forced the type of a symbol with no other type - to be BSF_OBJECT. - -2000-02-27 Hans-Peter Nilsson <hp@axis.com> - - * doc/internals.texi (CPU backend): Mention that - line_separator_chars do not break up comments. Fix typos for - LEX_AT and LEX_NAME descriptions. Document operands for - TC_EQUAL_IN_INSN, md_operand and md_section_align. Correct - description of md_create_short_jump usage. Document argument for - md_undefined_symbol. - -2000-02-27 Jakub Jelinek <jakub@redhat.com> - - * config/tc-sparc.c (OPTION_UNDECLARED_REGS): New option. - (md_parse_option): Handle it. - (md_show_usage): Document it. - -2000-02-27 Ian Lance Taylor <ian@zembu.com> - - * config/tc-alpha.c (md_assemble): Accept `1' and `9' in an - opcode, for the instruction `pal19'. From Andrea Arcangeli - <andrea@suse.de>. - -2000-02-26 Alan Modra <alan@spri.levels.unisa.edu.au> - - * config/tc-i386.c (i386_immediate): Move constant operand sizing - from here.. - (md_assemble): To here, before template operands are matched. - Also ensure a constant immediate is sign extended when we know the - size is at most 16 bits. This is to catch cases like "add - $0xffc0,%ax" where we don't know the size, and thus that the - immediate can be represented as Imm8S until after parsing the - register operand. - (i386_displacement): Similarly sign extend 16 bit constant - displacements. - (md_assemble): Relax 16-bit jump constant range check to suit sign - extended displacements. - -2000-02-26 Andreas Jaeger <aj@suse.de> - - * doc/c-mips.texi (MIPS Opts): Fix typo in last patch. - -2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au> - - * config/tc-i386.c (md_assemble): Don't swap intersegment jmp and - call operands when intel_syntax. - (intel_float_operand): Return 2 for "fi...". - (i386_operand_modifier): Change "DWORD PTR" test to suit above. - Return SHORT_MNEM_SUFFIX for "WORD PTR" when "fi...". Revert - earlier "SHORT" change. - (md_assemble): When determining suffix from Regs, exclude - InOutPortReg. - -2000-02-24 Nick Clifton <nickc@cygnus.com> - - * configure: Add arm-wince, mips-pe and sh-pe targets. - * configure: Regenerate. - - * config/obj-coff.h (COFF_WITH_PE): Define for mips-pe and - sh-pe targets. - (TARGET_FORMAT): Set to "pe-shl" for the sh-pe target and to - "pe-mips" for the mips-pe target. - - * config/tc-arm.c (insns): Change displacement encoded in BL - and B instructions if the target port is arm-wince. - (do_ldst): Do not bias the relocation offset if the target - port is arm-wince. - (md_pcrel_from): Add in missing relocation offset bias if the - target os arm-wince. - - * config/tc-mips.c (mips_target_format): Support COFF flavour. - (md_begin): Disable -G support for mips-pe target. - (md_apply_fix): Treat BFD_RELOC_RVA reloc as BFD_RELOC_32. - * config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Add support for - COFF flavour. - - * config/tc-sh.c (md_begin): sh-pe target is little endian. - * config/tc-sh.h (SUB_SEGMENT_ALIGN): If using a BFD - assembler, just set the alignment to 4. - - * config/te-wince-pe.h: New file for WinCE targets. Define - TE_WINCE. - -2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au> - - * config/tc-i386.c (md_assemble): Swap segments too for intel mode - string instructions. - (i386_operand_modifier): Set i.suffix = WORD_MNEM_SUFFIX for SHORT. - (i386_intel_memory_operand): After finding a segment override, - check again for no `[' before looking for a displacement. Bomb if - more than one displacement rather than silently discarding the - second and subsequent ones. Free strings malloc'd by - build_displacement_string. - -2000-02-24 Catherine Moore <clm@cygnus.com> - - * config/obj-som.c (obj_pseudo_table): Add "weak". - (obj_som_weak): New routine. - -2000-02-24 Alan Modra <alan@spri.levels.unisa.edu.au> - - * config/tc-i386.c (union i386_op): New. - (struct _i386_insn): Delete disps[], imms[], regs[]. Add op[]. - Throughout file replace occurences of disps[n], imms[n], regs[n] - with equivalent op[n].disps, op[n].imms, op[n].regs. Simplify - intel mode operand swapping. Add assert in regKludge and - fake_zero_displacement code. Test i.types[n] when outputting - displacements and immediates. Combine output of Disp16 with - Disp32. - (md_assemble): Don't try to fix broken UNIXWARE_COMPAT opcodes - when in intel mode by (not) reversing fsub and fdiv operands - before the template search. This fails for single operand - shorthand forms of the instruction, and if UNIXWARE_COMPAT is - undefined. Instead fix the base_opcode after we've found the - template. Move base_opcode xor with found_reverse_match from - opcode output code to before this fix so we test for the correct - opcodes. - (md_assemble): Don't use strcmp when deciding to ignore the suffix - check in intel mode. Instead compare opcodes. - - * config/tc-i386.h (TC_RELOC): Delete. - * config/tc-i386.c (TC_RELOC): Delete. Replace usage of TC_RELOC - with equivalent call to reloc. - - * as.h (flag_m68k_mri): Move declaration after target include, and - only declare when TC_M68K defined. Define as zero otherwise. - (LABELS_WITHOUT_COLONS, NO_PSEUDO_DOT): If undefined, define as 0. - * app.c (scrub_m68k_mri): Declare only when TC_M68K defined. - Define as zero otherwise. - (do_scrub_begin): Use m68k_mri parameter only when TC_M68K defined. - (struct app_save): Declare scrub_m68k_mri only when TC_M68K. - (app_push, app_pop): Save scrub_m68k_mri only when TC_M68K. - (do_scrub_chars): Use LABELS_WITHOUT_COLONS directly rather than - testing whether defined. - * cond.c (ignore_input): Use NO_PSEUDO_DOT directly. - * expr.c (operand): #ifdef unused case labels when TC_M68K undefined. - * read.c: Use LABELS_WITHOUT_COLONS and NO_PSEUDO_DOT directly - rather than testing whether defined. - (s_mri): Set flag_m68k_mri only when TC_M68K defined. - (parse_mri_cons): Declare and use only when TC_M68K. - * config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define as 1. - * config/tc-m68k.h (NO_PSEUDO_DOT): Define as 1. - * config/tc-m88k.h (NO_PSEUDO_DOT): Define as 1. - - * NEWS: Mention IBM 370 support. - -2000-02-23 Richard Henderson <rth@cygnus.com> - - * config/tc-i386.c (md_assemble): When swapping operands for - intel_syntax, assume everything that's not Imm or Disp is a - register. - -2000-02-23 Linas Vepstas <linas@linas.org> - - * config/tc-i370.c, config/tc-i370.h: New files. - * Makefile.am: Add support for Linux/IBM 370. - * configure.in: Likewise. - * app.c (do_scrub_begin): Don't lex single quote when TC_I370. - * config/obj-elf.c: Include elf/i370.h - (obj_elf_section): Don't do anything special for flag_mri if TC_I370. - - * Makefile.in: Regenerate. - * configure: Regenerate. - - * doc/c-i370.texi: New file. - * doc/all.texi: Include it. - * doc/as.texinfo: And here. - * doc/Makefile.am(CPU_DOCS): Add c-i370.texi. - * doc/Makefile.in: Regenerate. - -2000-02-19 Michael Meissner <meissner@redhat.com> - - * config/tc-d30v.c (parallel_ok): Use FLAG_NOT_WITH_ADDSUBppp to - determine if an instruction can be used in parallel with an ADDppp - or SUBppp instruction. - -2000-02-22 Andrew Haley <aph@cygnus.com> - - * doc/c-mips.texi (MIPS Opts): Document -mgp32 and -mgp64. - -2000-02-22 Andrew Haley <aph@cygnus.com> - - * config/tc-mips.c (mips_gp32): New variable. - (macro_build) Use mips_gp32. - (mips_ip): Ditto. - (md_longopts): Add "-mgp32" and "-mgp64". - (md_parse_option): Add OPTION_GP32 and OPTION_GP64. - - (OPTION_M7900): Change offset - (OPTION_NO_M7900): Ditto. - -2000-02-22 Alexandre Oliva <oliva@lsd.ic.unicamp.br> - - * config/obj-coff.c (add_lineno): Accept non-positive lineno with - warning, and bump it to 1. - -2000-02-22 Ian Lance Taylor <ian@zembu.com> - - From Brad Lucier <lucier@math.purdue.edu>: - * dwarf2dbg.c (print_stats): Add cast to force printf argument to - match format. - -2000-02-21 Catherine Moore <clm@cygnus.com> - - * config/tc-mips.c (MF_HILO_INSN): Define. - (mips_7000_hilo_fix): Declare. - (append_insn): Conditionally insert nops after an mfhi/mflo insn. - (md_parse_option): Check for 7000_HILO_FIX options. - (OPTION_M7000_HILO_FIX): Define. - (OPTION_NO_M7000_HILO_FIX): Define. - * doc/c-mips.texi (-mfix7000): Describe. - -2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au> - - * listing.c (print_lines): Remove unused variable `end'. - - * config/tc-i386.c (md_assemble): Use `reloc()' to select reloc - type for JumpInterSegment output. Use enum bfd_reloc_code_real for - reloc_type when BFD_ASSEMBLER. - (md_estimate_size_before_relax): Use enum bfd_reloc_code_real for - reloc_type when BFD_ASSEMBLER. Move common code out of switch - statement and quell signed vs. unsigned comparison warning. - -2000-02-18 Nick Clifton <nickc@cygnus.com> - - * config/tc-d10v.c (find_opcode): Add a symbol's value to - the computed frag offset, rather than overwriting it. - -Thu Feb 17 00:11:08 2000 J"orn Rennecke <amylaar@cygnus.co.uk> - - * config/tc-sh.c ("elf/sh.h"): Include. - (sh_dsp, valid_arch, reg_x, reg_y, reg_efg): New static variables. - (md.begin): Initialize target_arch. - Only include opcodes in has table that match selected architecture. - (parse_reg): Recognize register names for sh-dsp. - (parse_at): Recognize post-modify addressing. - (get_operands): The leading space is now optional. - (get_specific): Remove FDREG_N support. Add support for sh-dsp - arguments. Update valid_arch. - (build_Mytes): Add support for SDT_REG_N. - (find_cooked_opcode): New function, broken out of md_assemble. - (assemble_ppi, sh_elf_final_processing): New functions. - (md_assemble): Use find_cooked_opcode and assemble_ppi. - (md_longopts, md_parse_option): New option: -dsp. - * config/tc-sh.h (elf_tc_final_processing): Define. - (sh_elf_final_processing): Declare. - -Fri Feb 11 14:21:51 2000 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_build_unwind_subspace): Use subseg_new to create - the unwinder subspace. Save the current seg/subseg before creating - the new seg/subseg. - -2000-02-10 Nick Clifton <nickc@cygnus.com> - - * config/tc-mcore.c (INST_BYTE0): Redefine to handle big and - little endian targets. - (INST_BYTE1): Redefine to handle big and little endian - targets. - (cpu_type): New type: Select between M340 and M210. - (parse_psrmod): New function: Parse the PSRCLR and PSRSET - instructions of the M340. - (md_assemble): Add support for the MULSH and OPSR classes of - instructions. - (md_atof): Add support for little endian targets. - (md_parse_option): Add support for -EL, -EB and -mcpu command - line switches. - (md_convert_frag): Add support for little endian targets. - (md_apply_fix3): Add support for little endian targets. - (md_number_to_chars): Add support for little endian targets. - -2000-02-10 Timothy Wall <twall@redhat.com> - - * read.c (read_a_source_file): If TC_START_LABEL_WITHOUT_COLON is - defined, use it to verify the symbol just read should be a label. - -2000-02-10 Timothy Wall <twall@redhat.com> - - * app.c (do_scrub_chars): Handle "||" for parallel instructions - when DOUBLEBAR_PARALLEL is defined. Avoid stripping whitespace - around colons when KEEP_WHITE_AROUND_COLON is defined. - * doc/internals.texi (CPU backend): Document DOUBLEBAR_PARALLEL - and KEEP_WHITE_AROUND_COLON. - -2000-02-08 Timothy Wall <twall@redhat.com> - - * read.c (s_rept): Call do_repeat, which abstracts the repeat - logic. - (do_repeat): New. Abstract repeat logic so that a "break" can be - implemented. - (end_repeat): New. Provide support for a "break" out of the - repeat loop. - * read.h: Add prototypes for new functions. - -2000-02-08 Timothy Wall <twall@redhat.com> - - * doc/internals.texi: Document NUMBERS_WITH_SUFFIX macro. - * as.h: Provide a default NUMBERS_WITH_SUFFIX definition (zero). - * expr.c: Handle numbers with suffixes if NUMBERS_WITH_SUFFIX is - non-zero. - -2000-02-08 Timothy Wall <twall@redhat.com> - - * read.c: Added elseif to directives table. - * read.h: Added prototype for s_elseif. - * doc/as.texinfo: Added description for elseif. - * cond.c (s_elseif): New function - -2000-02-04 Timothy Wall <twall@redhat.com> - - * listing.c (print_lines): Remove conditionals causing bug in - listings. - -2000-02-03 Timothy Wall <twall@cygnus.com> - - * as.h: Define OCTETS_PER_BYTE and OCTETS_PER_BYTE_POWER - default values. - * frags.c (frag_new): Calculate fr_fix in octets - (frag_now_fix) Return offset as target address offset (bytes). - (frag_now_fix_octets) New - Return offset in octets (8-bit - quantities). - * frags.h: Added prototype for frag_now_fix_octets(). - Distinguish between octets and bytes in field descriptions. - * listing.c (calc_hex): Account for octets vs bytes when - printing addresses/offsets. - (print_lines) Ditto. Also, if LISTING_WORD_SIZE is not 1, and - target is little-endian, print the octets in a word in big-endian - order so that the display looks like a proper hexadecimal number, - instead of having the octets reversed. - * read.c (do_align): When recording alignment, alignment power - should be in terms of target bytes (minimum addressible unit) - instead of octets. - (do_org) Convert ORG target address (byte) argument into an - octet offset when generating a variable fragment. - * symbols.c (resolve_symbol_value): Symbol final value - converted to a target address offset (bytes) from its octet offset. - * config/obj-coff.c (coff_frob_symbol): Symbol target address - offset (bytes) is adjusted by the frag offset (octets) converted - to bytes. - (coff_frob_section) Section alignment power is in terms of bytes; - convert it to an octet alignment power when calculating size (and - size mask) in octets. Don't modify the section size in order to - "align" it for TI COFF, since that format has a different method - for storing alignment information. - -2000-02-01 Timothy Wall <twall@cygnus.com> - - * stabs.c (generate_asm_file): Escape backslashes in stabs file - entries, matching the way GCC generates them. If not escaped, the - filename is encoded incorrectly. - -2000-01-31 Nick Clifton <nickc@cygnus.com> - - * config/tc-arm.c (reg_table): Add support for ATPCS register - naming conventions. - -2000-01-31 Geoff Keating <geoffk@cygnus.com> - - * config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Don't define if - already defined. - * config/tc-ppc.h [OBJ_XCOFF] (OBJ_COPY_SYMBOL_ATTRIBUTES): - New macro. - * config/tc-ppc.c (ppc_fix_adjustable): Don't look at the frag - of a symbol when we really care about its value. - -2000-01-19 Chandra Chavva <cchavva@cygnus.com> - - * config/tc-mcore.c (md_assemble): Give warning message if - operands passes to instruction are more than the spec. - -2000-01-27 Thomas de Lellis <tdel@windriver.com> - - * config/tc-arm.c (armadjust_symtab): If the assembler is in - Thumb mode but the label seen was not declared as '.thumb_func' - then set the ST_INFO type to STT_ARM_16BIT mode. This allows - correct disassembly of Thumb code bounded by non function labels. - -2000-01-27 Alan Modra <alan@spri.levels.unisa.edu.au> - - * Makefile.am (MULTI_CFILES): Add config/e-i386aout.c - Add dependencies for e-i386aout.o. Fix 2 comment lines. - - * Makefile.in: Same here. - Update copyright. - - * configure.in: Set bfd_gas for i386-aout when primary target - is bfd. Handle i386aout emulation. Don't use te_file=multi, as - we may need the primary te_file. Remove incorrect comment. - - * configure: Regenerate. - - * config/e-i386aout.c: New file. - - * as.c (USE_EMULATIONS): Move to before print_version_id. - (struct emulation): Add i386aout. - (show_usage): Split text strings. Reformat -a text. Add --em - help. - Update copyright. - - * obj.h (struct format_ops): Add s_get_other and s_get_desc. - (aout_format_ops): New. - Update copyright. - - * read.c (s_lcomm_internal): Rewrite OBJ_AOUT,OBJ_BOUT - preprocessor conditional and add aout USE_EMULATIONS tests. - (read_a_source_file): Don't pass error strings to printf as - format arg. - Update copyright. - - * gasp.c (exp_get_abs): Don't pass error strings to printf as - format arg. - (do_data): Same here. - (process_file): And here. - Update copyright. - - * symbols.c (colon): Rewrite "already defined" fatal message - code for aout with USE_EMULATIONS. - Update copyright. - - * config/obj-aout.c (OBJ_HEADER): Define. - (obj_pseudo_table): Rename to aout_pseudo_table. Init all - fields of sentinel. - (obj_aout_frob_symbol): Expand S_GET_DESC, S_GET_TYPE, - S_GET_OTHER, S_SET_TYPE macros since we don't need obj-multi - forms here. - (obj_aout_type): Expand S_SET_OTHER here too. - (obj_read_begin_hook): Remove. - (aout_pop_insert): New. - (obj_aout_s_get_other): New. - (obj_aout_s_get_desc): New. - (aout_format_ops): New. - Update copyright. - - * config/obj-aout.h (obj_pop_insert): Define so non-multi usage - gets aout_pseudo_table. - (aout_pseudo_table): Declare. - (obj_read_begin_hook): Define. - Update copyright. - - * config/obj-coff.c (obj_pseudo_table): Rename to - coff_pseudo_table. - (coff_pop_insert): Use coff_pseudo_table. - (coff_sec_sym_ok_for_reloc): Remove. - (coff_format_ops): Add 0 entries for s_get_size, s_set_size, - and comment all zero entries and remove #if 0 code. - Update copyright. - - * config/obj-coff.h (obj_pop_insert): Define. - (coff_pseudo_table): Declare. - Update copyright. - - * config/obj-ecoff.c (ecoff_format_ops): Add 0 entries for - s_get_size, s_set_size. Comment all zero entries. - Update copyright. - - * config/obj-elf.c (elf_s_get_other): New function. - (obj_read_begin_hook): Rename to elf_obj_read_begin_hook. - (obj_symbol_new_hook): Rename to elf_obj_symbol_new_hook. - (elf_format_ops): Add elf_s_get_other, 0 s_get_size entry, and - comment. - (obj_elf_parse_section_letters): Don't pass error strings to - printf as format arg. - Update copyright. - - * config/obj-elf.h (ECOFF_DEBUGGING): Define when - OBJ_MAYBE_ECOFF. - (elf_s_get_other): Declare. - (S_GET_OTHER) Define as elf_s_get_other if not already - defined. - (S_SET_OTHER): Only define when not already defined. - (elf_obj_read_begin_hook): Declare. - (obj_read_begin_hook): Define. - (elf_obj_symbol_new_hook): Declare. - (obj_symbol_new_hook): Define. - Update copyright. - - * config/obj-multi.h: Add copyright header and protect against - multiple inclusion. Add * to all function pointers. - (OBJ_HEADER): If defined, include it rather than other defines - in this file. - (obj_frob_file_after_relocs): Test for NULL. - (obj_symbol_new_hook): Here too. - (obj_sec_sym_ok_for_reloc): And here. - (S_GET_OTHER): Define. - (S_GET_DESC): Define. - (ECOFF_DEBUGGING): Remove as it's done in obj-elf.h - (OBJ_MAYBE_ELF): Update comment. - - * config/tc-i386.c (i386_immediate): Add OBJ_MAYBE_AOUT to - OBJ_AOUT preprocessor conditional and handle emulation by - testing OUTPUT_FLAVOR. - (i386_displacement): Here too. - (md_section_align): Similarly here. - (i386_target_format): Conditionally compile when more than one - of OBJ_MAYBE_{ELF,COFF,AOUT} defined. Add aout case. - (i386_immediate): Fix error message for aout BFD_ASSMBLER. - (i386_displacement): Here too. - Update copyright. - - * config/tc-i386.h (AOUT_TARGET_FORMAT): Define for each TE_*. - Define TARGET_FORMAT for aout only when not multi. - Update copyright. - - * config/te-multi.h: Delete file as it's identical to te-generic.h - -2000-01-15 Alan Modra <alan@spri.levels.unisa.edu.au> - - * config/tc-i386.h (DWORD_MNEM_SUFFIX): Delete. - * config/tc-i386.c (DWORD_MNEM_SUFFIX): Rename all occurrences to - LONG_MNEM_SUFFIX. - - * config/tc-i386.h (INTEL_DWORD_MNEM_SUFFIX): Rename to - DWORD_MNEM_SUFFIX. - * config/tc-i386.c (INTEL_DWORD_MNEM_SUFFIX): Here too. Fix some - comments. - -2000-01-13 Clinton Popetz <cpopetz@cygnus.com> - - * config/tc-mips.c (mips_do_align): New function. - * config/tc-mips.h (md_do_align): Define. - -2000-01-10 Philip Blundell <philb@gnu.org> - - * doc/c-arm.texi (ARM Options): Fix typo. - (ARM-Chars): Correct description of `#'. Mention that `;' is a - line separator for Linux. - * doc/as.texinfo (Comments): Mention the ARM. - -2000-01-10 Philip Blundell <pb@futuretv.com> - - * configure.in (arm*-*-conix*): New target. - (arm*-*-linux-gnu*): Match instead of arm-*-linux* and - armv*-*-linux-gnu. - * configure: Regenerate. +2002-01-03 matthew green <mrg@redhat.com> -2000-01-03 Martin v. Loewis <loewis@informatik.hu-berlin.de> + * config/tc-ppc.c (md_parse_option): BookE is not Motorola specific. - * config/obj-elf.c (elf_pseudo_table): Define visibility pseudos. - (obj_elf_visibility): New function. +2002-01-02 Nick Clifton <nickc@cambridge.redhat.com> - * doc/as.texinfo (Visibility): New node: document visibility - pseudo ops. + * config/tc-m68k.c (md_estimate_size_before_relax): Test for a + NULL frag link. -For older changes see ChangeLog-9899 +For older changes see ChangeLog-0001 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff --git a/contrib/binutils/gas/ChangeLog-0001 b/contrib/binutils/gas/ChangeLog-0001 new file mode 100644 index 0000000..9d8af6f --- /dev/null +++ b/contrib/binutils/gas/ChangeLog-0001 @@ -0,0 +1,7703 @@ +2001-12-31 Richard Henderson <rth@redhat.com> + + * config/tc-ia64.c (errata_nop_necessary_p): Prototype. + (make_unw_section_name): Constify local variables. + + * config/tc-ia64.c (has_suffix_p): New. + (note_register_values): Use it instead of strstr. + +2001-12-31 Jeffrey A Law (law@redhat.com) + + * config/tc-hppa.c (pa_ip): Handle new 'c' mode completers, + 'X', 'M', and 'A'. + +2001-12-21 Jakub Jelinek <jakub@redhat.com> + + * config/tc-sparc.h (TC_PARSE_CONS_EXPRESSION): Define. + (sparc_cons): Provide prototype. + * config/tc-sparc.c (tc_gen_reloc): Handle BFD_RELOC_*_PCREL and + BFD_RELOC_SPARC_PLT{32,64}. Enumerate for which relocs + reloc->addend = fixp->fx_addnumber shouldn't be done instead of + enumarating for which pc relative ones it should be done. + (sparc_cons_special_reloc): New variable. + (sparc_cons): New function. + (cons_fix_new_sparc): Use sparc_cons_special_reloc. + * testsuite/gas/sparc/pcrel.s: New test. + * testsuite/gas/sparc/pcrel.d: Expected output. + * testsuite/gas/sparc/pcrel64.s: New test. + * testsuite/gas/sparc/pcrel64.d: Expected output. + * testsuite/gas/sparc/plt.s: New test. + * testsuite/gas/sparc/plt.d: Expected output. + * testsuite/gas/sparc/plt64.s: New test. + * testsuite/gas/sparc/plt64.d: Expected output. + * testsuite/gas/sparc/sparc.exp: Add pcrel, pcrel64, plt and plt64 + tests. + +2001-12-20 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + Daniel Jacobowitz <drow@mvista.com> + + * config/tc-mips.c (file_mips_gp32): Initialize to invalid value. + (file_mips_fp32): Likewise. + (md_begin): Compatibility handling for -mipsN option. + +2001-12-20 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-sh.c (parse_at): Reject @(r0) and @(r0,). + +2001-12-20 matthew green <mrg@redhat.com> + + * config/tc-ppc.c (md_parse_option): Make -maltivec default + to generating PowerPC instructions. + +2001-12-20 Jason Thorpe <thorpej@wasabisystems.com> + + * configure.in (mips-dec-netbsd*): Delete. + * configure: Regenerate. + + * configure.in (arm-*-netbsdelf*): Add target. + * configure: Regenerate. + +2001-12-18 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-mips.h (TC_HANDLE_FX_DONE): Remove redundant + definition. + +2001-12-18 Niibe Yutaka <gniibe@m17n.org> + + * configure.in (assign object format): Bug fix for setting + endian. + * configure: Regenerate. + +2001-12-18 matthew green <mrg@eterna.com.au> + + * configure.in (m68k-*-netbsdelf*): New target. + (m68k-*-netbsd*): Also include ELF support. + (m68k-*-netbsdaout*): New alias for m68*-*-netbsd*. + * configure: Regenerate. + +2001-12-18 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * gasp.c (main): Protoype. + +2001-12-17 Richard Henderson <rth@redhat.com> + + * config/tc-alpha.c (alpha_handle_align): Encode unop with RB as $sp. + +2001-12-17 Nick Clifton <nickc@cambridge.redhat.com> + + * cgen.c: Add prototype for queue_fixup. + (gas_cgen_parse_operand): Move initilisastion of errmsg to avoid + possible longjmp corruption. + * cgen.h: Add prototype for gas_cgen_md_operand. + +2001-12-15 Alan Modra <amodra@bigpond.net.au> + + * config/obj-elf.c (obj_elf_init_stab_section): References are + kept to section name strings. Don't alloca them! + +2001-12-12 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-d10v.c (get_operands): Mark OPERAND_PLUS after + OPERAND_ATSIGN as O_absent. + +2001-12-07 Geoffrey Keating <geoffk@redhat.com> + Richard Henderson <rth@redhat.com> + + * configure.in: Add support for xstormy16. + * configure: Regenerated. + * Makefile.am: Add support for xstormy16. + * Makefile.in: Regenerated. + * config/tc-xstormy16.c: New file. + * config/tc-xstormy16.h: New file. + +2001-12-06 Richard Earnshaw (rearnsha@arm.com) + + * tc-arm.c (do_arit, do_cmp, do_mov, do_ldst, do_ldstt, do_ldmstm) + (do_branch, do_swi, do_adr, do_adrl, do_empty, do_mul, do_mla) + (do_swap, do_msr, do_mrs, do_mull, do_ldstv4, do_bx, do_blx) + (do_bkpt, do_clz, do_lstc2, do_cdp2, do_co_reg2, do_smla, do_smlal) + (do_smul, do_qadd, do_pld, do_ldrd, do_co_reg2c, do_cdp, do_lstc) + (do_co_reg, do_fpa_ctrl, do_fpa_ldst, do_fpa_ldmstm, do_fpa_monadic) + (do_fpa_dyadic, do_fpa_cmp, do_fpa_from_reg, do_fpa_to_reg, do_mia) + (do_mar, do_mra, do_c_binops, do_c_binops_1, do_c_binops_2) + (do_c_binops_3, do_c_triple, do_c_triple_4, do_c_triple_5, do_c_quad) + (do_c_quad_6, do_c_dspsc, do_c_dspsc_1, do_c_dspsc_2, do_c_shift) + (do_c_shift_1, do_c_shift_2, do_c_ldst, do_c_ldst_1, do_c_ldst_2) + (do_c_ldst_3, do_c_ldst_4, do_branch25): Delete redundant argument, + FLAGS. + (struct asm_opcode): Adjust parms field accordingly. + (md_assemble): Don't pass dummy second argument when calling worker + functions. + (build_arm_ops_hsh): Add prototype + (BAD_FLAGS): Delete. + +2001-12-05 Richard Earnshaw <rearnsha@arm.com> + + * tc-arm.c (struct asm_opcode): Delete comp_suffix and flags. Add + cond_offset. Rename variants->variant. + (insns): Adjust for new format. Explicitly code each variant that + takes flags. Remove temporary instructions. + (struct arm_it): Remove redundant field suffix. + (s_flag, ldr_flags, str_flags, byte_flag, cmp_flags, ldm_flags) + (stm_flags, lfm_flags, sfm_flags, round_flags, fix_flags, except_flag) + (long_flag): Delete. + (struct asm_flg): Delete. + (LONGEST_INST): Delete. + (V4_STR_BIT): Define. + (struct thumb_opcode): Rename variants->variant. + (do_empty): Renamed from do_nop. + (ldst_extend): Delete argument hwse. Split code for half-word and + signed byte instructions to ... + (ldst_extend_v4): ... here. + (ld_mode_required_here): Use ldst_extend_v4. + (do_ldrd): Simplify now that this is only called for ldrd. No + need to test for XScale, which was wrong anyway. Don't reject r12 + as a target register. Add test that ldrd doesn't update an index + register. + (do_pld): Don't allow post-indexed or write-back addressing modes. + Adjust call to ldst_extend. + (do_adr): Split code for adrl to ... + (do_adrl): ... here. + (do_cmp): No need to fold in COND_BIT. + (do_ldst): Simplify. Split code for ldrt/strt into do_ldstt. Split + code to handle half-word and signed byte instructions to ... + (do_ldstv4): ... here. + (do_ldstt): New function. Handle load/store with translate. + (do_ldmstm): Write feature modification bits directly into + inst.instruction. + (do_fpa_ldst): Remove suffix handling code. + (do_fpa_dyadic, do_fpa_monadic, do_fpa_from_reg): Likewise. + (do_fpa_ldmstm): Type of access is now held in inst.instruction. + (build_arm_ops_hsh): New function. + (md_begin): Call it. Don't build the ARM opcode directly. + (md_assemble): Simplify ARM instruction handling. + +2001-12-05 Arati Dikey <aratid@kpit.com> + + * tc-sh.c (parse_at): Corrected incorrect op->type selection due + to missing 'else'. + +2001-12-04 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-d10v.c (write_2_short): Don't skip dummy fixups, so + that we can tell which operand refers to the insn put in the L + container and mark it as such, so that the relocation type can be + adjusted. + +2001-12-04 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (mips_cpreturn_offset): Better comment. + (load_register): Better error message. Cast away signedness + mismatches. Add casts needed for varargs. + (load_address): Replace checks of HAVE_64BIT_ADDRESS with dbl. + Remove superfluous casts. + (macro): Cast away signedness mismatches. Remove superfluous casts. + (s_cpload): Fix wrong comment. + (s_mips_weakext): Standardize output message. + (get_number): Likewise. + +2001-12-04 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (append_insn): Add jump address range overflow + check. + +2001-12-04 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (md_parse_option): Fix comment. Allow -mabi option + for ELF only. + (show): Document -mabi option. + +2001-12-03 Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com> + + * config/tc-arm.c (md_parse_option): Only clear cpu part when + specifying 'xscale' cpu (don't change the fpu part). + +2001-12-04 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-d10v.c (find_opcode): Reject SP operand if + OPERAND_NOSP flag is present. + +2001-12-03 Eric Christopher <echristo@redhat.com> + + * config/tc-mips.c (tc_gen_reloc): One missed BFD_RELOC_MIPS_GPREL. + +2001-12-02 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (macro_build): Replace BFD_RELOC_MIPS_GPREL + by BFD_RELOC_GPREL16. + (load_address): Likewise. + (macro): Likewise. + (md_apply_fix): Likewise. Replace BFD_RELOC_MIPS_GPREL32 by + BFD_RELOC_GPREL32. + (s_gpword): Replace BFD_RELOC_MIPS_GPREL32 by BFD_RELOC_GPREL32. + (tc_gen_reloc): Replace BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16. + *config/tc-mips.h: Replace BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16. + +2001-11-29 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-d10v.c (get_operands): Emit OPERAND_PLUS for + prefix `+'. + + * config/tc-d10v.c (find_opcode): Reject non-SP operand if + flags requires SP. + +2001-11-29 Arati Dikey <aratid@kpit.com> + + * tc-sh.c (parse_at): Removed case-sensitivity of index register + R8, R9. + +2001-11-28 Jakub Jelinek <jakub@redhat.com> + + * write.c (adjust_reloc_syms): Mark SEC_MERGE symbols as used + in reloc if it has non-zero addend. + * config/tc-alpha.c (tc_gen_reloc): Reinstall SEC_MERGE check. + * config/tc-sparc.c (md_apply_fix3): Likewise. + +2001-11-28 Andreas Schwab <schwab@suse.de> + + * as.c (parse_args): Call md_after_parse_args if defined. + * config/tc-ia64.h (md_after_parse_args): Define. + * config/tc-ia64.c (ia64_after_parse_args): Reject --gstabs. + * doc/internals.texi (CPU backend): Document md_after_parse_args. + +2001-11-23 Jakub Jelinek <jakub@redhat.com> + + * config/tc-alpha.c (tc_gen_reloc): Remove SEC_MERGE test. + * write.c (adjust_reloc_syms): Don't handle relocs against + SEC_MERGE section symbols specially. + (fixup_segment): Likewise. + +2001-11-21 Richard Sandiford <rsandifo@redhat.com> + + * config/tc-mips.c (mips_need_elf_addend_fixup): New, extracted from... + (md_apply_fix3): ...here. Don't prevent the symbol value being + subtracted twice from GPREL addends. + (tc_gen_reloc): Add the symbol value to a GPREL addend if it was + subtracted by the previous function. + +2001-11-20 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-avr.c (md_apply_fix3): Fix typo introduced by + md_apply_fix3 change. + +2001-11-20 Ben Elliston <bje@redhat.com> + + * config/tc-m88k.c (md_apply_fix3): Match local variable `val' to + usage after md_apply_fix3 cleanups. + +2001-11-19 Hans-Peter Nilsson <hp@bitrange.com> + + * doc/c-mmix.texi: Use texinfo 4 features. + (MMIX-mmixal): Fix typo. + +2001-11-17 Hans-Peter Nilsson <hp@axis.com> + + * config/tc-cris.c (md_apply_fix3): Cast value, not pointer, in + val assignment. + +2001-11-16 Michael Snyder <msnyder@redhat.com> + + * stabs.c (stabs_generate_asm_lineno): Remember file and line number + from one call to the next, and eliminate consecutive duplicates + (thereby emitting only one line symbol per source line). + * dwarf2dbg.c (dwarf2_gen_line_info): Ditto. + +2001-11-16 Alan Modra <amodra@bigpond.net.au> + + * config/tc-m68k.c (md_apply_fix3): Change val back to a signed type. + +2001-11-15 H.J. Lu <hjl@gnu.org> + + * config/tc-hppa.c (md_apply_fix3): Fix a typo. + +2001-11-15 H.J. Lu <hjl@gnu.org> + + * config/tc-alpha.c (md_apply_fix3): Fix a typo. + +2001-11-15 Nick Clifton <nickc@cambridge.redhat.com> + + * write.c (fixup_segment): Remove references to md_apply_fix and + TC_HANDLE_FX_DONE. + * cgen.c, config/obj-coff.c, config/tc-*.c: Update all occurances + of md_apply_fix to md_apply_fix3. + Make all md_apply_fix3 functions void. + * cgen.h, config/obj-coff.h, tc-*.h: Remove all definitions of + MD_APPLY_FIX3 and TC_HANDLE_FX_DONE. + * doc/internals.texi: Update references to md_apply_fix3. + * tc.h: Update prototype for md_apply_fix3. + +2001-11-15 Alan Modra <amodra@bigpond.net.au> + + * config/tc-i386.h (md_end): Define. + (i386_elf_emit_arch_note): Declare. + (CpuUnknown): Delete. + * config/tc-i386.c (default_arch): Constify. + (smallest_imm_type): Remove CpuUnknown test. + (md_assemble): Don't bother checking cpu_arch_flags non-zero. + (i386_elf_emit_arch_note): New function. + + * po/POTFILES.in: Regenerate. + +2001-11-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (mips_ip): Re-allow %hi() op for non-ELF assembler. + +2001-11-15 Alan Modra <amodra@bigpond.net.au> + + * frags.c (frag_grow): Revert last change. + + * dwarf2dbg.c (get_frag_fix): Align last frag size. + + * config/tc-ppc.c (ppc_insert_operand): Pass (ppc_cpu | ppc_size) + to operand->insert. + (md_assemble): Likewise. + +2001-11-12 Nick Clifton <nickc@cambridge.redhat.com> + + * frags.c (frag_grow): Use frag_make_room() to grow the + obstack. + +2001-11-14 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-sparc.c (md_apply_fix3): Do not remove the symbol's + value from the addend for fixups against local symbols in + SEC_MERGE sections - it was not added in, in the first place. + +2001-11-11 Timothy Wall <twall@alum.mit.edu> + + * write.c (relax_segment): Convert symbol address into an octet + offset prior to adding to the frag address, which is an octet + offset. Add comments to that effect. + * config/tc-tic54x.c: Fix bugs causing tests to fail. + * config/tc-tic54x.h: Ditch PARAMS macro. + +2001-11-13 Alan Modra <amodra@bigpond.net.au> + + * config/obj-elf.c (obj_elf_version): Ensure terminating NUL is + put in note section. Use sizeof instead of hard-coded constants. + +2001-11-12 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (support_64bit_objects): Define for OBJ_ELF only. + (md_longopts): Allow OPTION_MABI for ELF compilation only. RE-allow + OPTION_GP32, OPTION_GP64, OPTION_FP32 for non-ELF compilation. + Sort options a bit more logical. + (md_parse_option): Allow OPTION_32, OPTION_N32, OPTION_N64, + OPTION_MABI only for elf targets. + +2001-11-12 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (set_at): Add cast needed for varargs. + (load_register): Likewise. + (macro): Likewise. Some code reformatting. + (macro2): Add cast needed for varargs. + (mips16_macro): Likewise. + +2001-11-12 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (md_assemble): Remove superflous casts. + (append_insn): Likewise. + (mips16_macro_build): Likewise. + (macro): Likewise. + (mips16_ip): Likewise. + (s_cpload): Likewise. + (mips_relax_frag): Likewise. + +2001-11-12 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (mips_abi_level): Move in front of + mips_set_options. + (mips_set_options): Add members gp32, fp32, abi. + (file_mips_gp32): New flag. + (file_mips_fp32): New flag. + (mips_opts): Initialize the new members. + (mips_gp32): Remove. + (mips_fp32): Remove. + (HAVE_32BIT_GPRS): Use the new values from mips_opts. + (HAVE_32BIT_FPRS): Likewise. + (HAVE_NEWABI): Likewise. + (HAVE_64BIT_OBJECTS): Likewise. + (md_begin): Likewise. Save default (file) values. + (md_parse_option): Use the new values from mips_opts. + (s_mipsset): Likewise. Fix logic to keep the ABI selection if + possible. Let .set mipsN work together with .set push/pop. + Enhance error messages. + (mips_elf_final_processing): Use file_mips_* for header processing. + +2001-11-09 Marek Michalkiewicz <marekm@amelek.gda.pl> + + * config/tc-avr.c (mcu_types): Update for new devices. + +2001-11-09 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * doc/Makefile.am (POD2MAN): Use 'GNU Development Tools' for + the page man title. + * doc/Makefile.in: Rebuild. + * doc/as.texinfo: Do not put man SEEALSO in document; + Use @command for commands, @option for options; Reorganize usage + to clearly identify target specific options. + +2001-11-08 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (mips_force_relocation): Remove duplicate code. + +2001-11-06 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (my_getSmallParser): Fix small parser bug. + +2001-11-05 Martin Schwidefsky <schwidefsky@de.ibm.com> + + * config/tc-s390.c (tc_s390_force_relocation): Force all relocations + that need the global offset table. + (md_apply_fix3): Add code to undo opertions done in fixup_segment + triggered by TC_FORCE_RELOCATION. + * config/tc-s390.h (TC_FORCE_RELOCATION): Replace macro code with + a call to function tc_s390_force_relocation. + (TC_FIX_ADJUSTABLE): Define. + +2001-11-04 Chris Demetriou <cgd@broadcom.com> + + * configure.in (mips-*-netbsd*): Add support for target. + * configure: Regenerate. + +2001-11-02 Nick Clifton <nickc@cambridge.redhat.com> + + * configure.in (ALL_LINGUAS): Add 'fr'. + * configure: Regernate. + * po/fr.po: New file. Obtained from the translation project web + site. + +2001-11-02 Richard Earnshaw <rearnsha@arm.com> + + * tc-arm.c: Re-arrange prototypes by architecture. + (insns): Re-arrange instructions by archtitecture. Pld instruction + is part of ARMv5E. + (tinsns): blx and bkpt are part of ARMv5T. + (do_fp_{ctrl,ldst,ldstm,dyadic,monadic,cmp,from_reg,to_reg}): Rename + to do_fpa_*. All callers changed. + + * tc-arm.c (insns): Add two temporary instructions to handle + ldrd/strd. + +2001-11-01 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (build_jump_insn): Allocate worst case storage + for bra/bsr and use frag_variant(), this ensure that the possible + 16-bit BFD_RELOC_16 will be in the same frag. + +2001-10-31 Chris Demetriou <cgd@broadcom.com> + + * config/tc-mips.c (HAVE_32BIT_ADDRESSES): If compiling embedded + PIC code, assume pointers the same size as GPRs. + (macro): In M_LA_AB handling for embedded PIC code, support + "la $treg,foo-bar($breg)". In load/store handling + (label ld_st) support "<op> $treg,<sym>-<local_sym>($breg)" + which is used by the compiler for switch statements. + In load/store double multi-instruction macro handling + (label ldd_std) add a comment that no special handling + is currently done for embedded PIC. + (mips_ip): In 'o' (16-bit offset) case, only accept 16 + bit offsets. + +2001-10-31 Richard Earnshaw <rearnsha@arm.com> + + General cleanup of feature definitions. + * tc-arm.c (ARM_EXT_LONGMUL, ARM_EXT_HALFWORD, ARM_EXT_THUMB): Delete. + (ARM_2UP, ARM_ALL, ARM_3UP, ARM_6UP): Delete. + (FPU_CORE, FPU_FPA10, FPA_FPA11, FPU_ALL, FPA_MEMMULTI): Delete. + (ARM_EXT_V{1,2,2S,3,3M,4,4T,5T,5ExP}): New defines. + (ARM_EXT_V{5,5E}): Synchronize with above. + (ARM_ARCH_V*): Define a complete set in terms of above features. + (ARM_{1,2,3,250,6,7,8,9,STRONG}): Define in terms of architecture. + (FPU_FPA_EXT_V[12]): Define. + (FPU_ARCH_FPE, FPU_ARCH_FPA): Define in terms of above. + (FPU_ANY): Define. + (FPU_DEFAULT): Default to FPA. + (CPU_DEFAULT): For XScale, this is now just ARM_ARCH_XSCALE; for + Thumb, this is now ARM_ARCH_V5T. + (insns): Rework for new feature defines. + (tinsns): Likewise. + (opcode_select, do_ldst, md_begin, md_parse_option): Likewise. + +2001-10-31 NIIBE Yutaka <gniibe@m17n.org> + + * configure.in: Handle sh*eb-*-linux* and sh*-*-linux*. + * configure: Regenerate. + * Makefile.in: Regenerate. + * doc/c-sh.texi (SH Options): Added descriptions. + +2001-10-30 Hans-Peter Nilsson <hp@bitrange.com> + + * configure.in: Update for MMIX port. + * Makefile.am: Ditto. Regenerate dependencies. + * Makefile.in: Regenerate. + * configure: Regenerate. + * config/tc-mmix.h, config/tc-mmix.c: New files. + * doc/Makefile.am (CPU_DOCS): Add c-mmix.texi + * doc/Makefile.in: Regenerate. + * doc/all.texi: @set MMIX. + * doc/as.texinfo: Ditto. Add MMIX gas manpage option overview. + Include c-mmix.texi. + * doc/c-mmix.texi: New file. + +2001-10-24 Chris Demetriou <cgd@broadcom.com> + + * config/tc-mips.c (hilo_interlocks, cop_interlocks): Make + these evaluate to true if mips_arch indicates SB-1. + +2001-10-23 Alan Modra <amodra@bigpond.net.au> + + * as.c (parse_args): Print the date as well for --version. + +2001-10-20 Chris Demetriou <cgd@broadcom.com> + + * config/tc-mips.c (md_show_usage): Print "sb1" for Broadcom + SB-1 CPU for consistency. + (mips_cpu_info_table): Tweak comment about SB-1. + +2001-10-20 H.J. Lu <hjl@gnu.org> + + * config/tc-arm.c (do_c_shift): Use ISDIGIT instead of isdigit. + (cirrus_parse_offset): Likewise. + +2001-10-19 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c: Restore line_comment_chars. + +2001-10-18 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c (comment_chars): Remove semi-colon accidentally + added to the list. + +2001-10-18 Hans-Peter Nilsson <hp@bitrange.com> + + * write.c (fixup_segment): Handle fixups for SEC_MERGE sections as + for undefined symbols. + +2001-10-17 Chris Demetriou <cgd@broadcom.com> + + * doc/as.texinfo (MIPS ISA options): Added accidentally + omitted "-mips64" option to list of options. + +2001-10-17 matthew green <mrg@redhat.com> + + * config/tc-ppc.c (md_show_usage): Add missing -maltivec, -m7400, + -m7410, -m7450 and -m7455 options. + +2001-10-17 Alan Modra <amodra@bigpond.net.au> + + * config/tc-ppc.c (PPC_HA, PPC_HIGHERA, PPC_HIGHESTA): Simplify. + (ppc_size): Select PPC_OPCODE_64 if 64 bit. + (md_begin): Don't set ppc_size here. + (ppc_target_format): Test ppc_size as well as BFD_DEFAULT_TARGET_SIZE. + (md_shortopts): Constify. + (md_longopts): Likewise. + (md_longopts_size): Likewise. + (ppc_elf_suffix): Only allow 64-bit relocs when ppc_size specifies + 64-bit opcodes. + (ppc_machine): Explain why this function is a nop. + +2001-10-17 Alan Modra <amodra@bigpond.net.au> + + * bit_fix.h: Comment typo fix. + * config/tc-mips.c: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-arc.c (arc_code_symbol): Remove unnecessary test. + + * configure.in (MIPS_STABS_ELF): AC_DEFINE in only one place so + that autoheader doesn't duplicate config.in entries. + (DEFAULT_ARCH): Ditto. + * configure: Regenerate. + * config.in: Regenerate. + +2001-10-16 Alan Modra <amodra@bigpond.net.au> + + From Andrew Pines <apines@cosmodog.com> + * config/tc-m68k.c (m68k_ip): Correct absolute jmp opcodes. + +2001-10-16 NIIBE Yutaka <gniibe@m17n.org>, + Hans-Peter Nilsson <hp@bitrange.com> + + * config/tc-sh.c (shl): Remove. + (big): New function. + (little): Remove shl handling. Emit error for endian mismatch. + (md_show_usage): Add description of -big. + (md_parse_option): Handle OPTION_BIG. Remove shl handling. + (OPTION_BIG): Add. + (md_pseudo_table): Add .big. + (md_longopts): Add -big. + (md_begin): Don't set target_big_endian here. + * config/tc-sh.h (TARGET_BYTES_BIG_ENDIAN): Remove. + (LISTING_HEADER, COFF_MAGIC, TARGET_FORMAT): Use target_big_endian. + (shl): Remove. + * configure.in (endian): Default is big. + (sh-*-pe*): Little endian. + (cpu_type): Set sh for target sh*. + * configure: Regenerate. + +2001-10-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (md_apply_fix): Preliminary handling of NewABI + relocations. + +2001-10-13 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c: Replace CONST with const. + + * cgen.c: Tidy up formatting. + +2001-10-12 matthew green <mrg@redhat.com> + + * config/tc-ppc.c (md_parse_option): New -m7410, -m7450 and -m7455 + flags, equivalent to -m7400. New -maltivec to enable AltiVec + instructions. New -mbook64 and -mbooke/-mbooke32 flags to enable + 64-bit and 32-bit BookE support, respectively. Change -m403 and + -m405 to set PPC403 option. + (md_show_usage): Adjust for new options. + * doc/all.texi: Set PPC. + * doc/as.texinfo: Add PPC support and pull in c-ppc.texi. + * doc/c-ppc.texi: New file. + * doc/Makefile.am (CPU_DOCS): Add c-ppc.texi. + * doc/Makefile.in: Regenerate. + +2001-10-12 Nick Clifton <nickc@cambridge.redhat.com> + + * read.c (s_bad_endr): New function. Issues a warning message + about a bad use of the .rept pseudo op. + (po_table[]): Add .endr. + * read.h: Prototype s_bad_endr. + + * CONTRIBUTORS: Update contact email address. + +2001-10-11 Kazu Hirata <kazu@hxi.com> + + * config/tc-alpha.c: Fix comment typos. + * config/tc-cris.c: Likewise. + * config/tc-hppa.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-mips.c: Likewise. + * config/tc-mn10200.c: Likewise. + * config/tc-mn10300.c: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-tahoe.c: Likewise. + * config/tc-v850.c: Likewise. + +2001-10-11 Kazu Hirata <kazu@hxi.com> + + * app.c: Fix comment typos. + * bit_fix.h: Likewise. + * expr.c: Likewise. + * itbl-ops.c: Likewise. + +2001-10-11 Nick Clifton <nickc@cambridge.redhat.com> + + * input-file.c: Include safe-ctype.h. + (input_file_open): Use ISSPACE instead of isspace. + +2001-10-10 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (mips_cpreturn_offset): New variable. + (mips_cpreturn_register): Likewise. + (mips_gp_register): Likewise. + (s_cpsetup): New function prototype. + (s_cplocal): Likewise. + (s_cpreturn): Likewise. + (s_gpvalue): Likewise. + (mips_pseudo_table): Add .cpsetup, .cplocal, .cpreturn, .gpvalue + pseudo-ops. + (macro): Don't warn about .cprestore for NewABI. + (md_pcrel_from): Code cleanup. + (mips_force_relocation): Force output of some NewABI relocations even + without a defined symbol. + (s_cpload): Ignore .cpload for NewABI. + (s_cpsetup): Handle .cpsetup. + (s_cplocal): Handle .cplocal. + (s_cprestore): Ignore .cprestore for NewABI. + (s_cpreturn): Handle .cpreturn. + (s_gpvalue): Handle .gpvalue. + (s_cpadd): Ignore .cpadd for NewABI. + (nopic_need_relax): Take g_switch_value into account as gp + optimization. + (tc_gen_reloc): Don't handle BFD_RELOC_MIPS_{CALL,GOT}* for NewABI. + +2001-10-10 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (my_getSmallParser): New function prototype. + (small_ex_type): Named this enum, more return values for + my_getSmallExpression. + (mips_ip): Allow SPC and HT between arguments. Handle some NewABI + triple relocations. Protect some parts with ifdef OBJ_ELF. + (percent_op_match): New struct, lookup table for %some_reloc(). + (my_getSmallParser): New function, parses nested percent_ops also. + (my_getSmallExpression): Rewite to support nested percent_ops. + +2001-10-10 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c + (load_address): Support both 32- and 64-bit addresses. + (macro): Call load_register correctly. Expand 64-bit loads ans stores. + (macro2): Call load_address correctly. + +2001-10-09 Christian Groessler <cpg@aladdin.de> + + * config/tc-z8k.c: Include opcodes/z8k-opc.h after bfd.h + since z8k-opc.h now uses the PARAMS macro. + +2001-10-09 Aldy Hernandez <aldyh@redhat.com> + + * config/tc-arm.c: Change MAVERIK to MAVERICK. + +2001-10-09 Alan Modra <amodra@bigpond.net.au> + + * config/obj-elf.c: Make use of elf_group_name and elf_next_in_group + throughout file. + (obj_elf_change_section): Rename "group" to "group_name". + (obj_elf_section): Likewise. + (elf_frob_file): Don't use sec->lineno for SHT_GROUP section to store + first member section; Instead use elf_next_in_group. + +2001-10-09 Alan Modra <amodra@bigpond.net.au> + + * config/obj-elf.c: (obj_elf_change_section): Add "group" param. + Set elf_section_data group from it. Warn if group name changed. + (obj_elf_parse_section_letters): Parse 'G' too. + (obj_elf_section): Parse group name. + (struct group_list): New. + (build_group_lists): New function. + (elf_frob_file): Create SEC_GROUP section(s). + + * config/obj-elf.c: (elf_copy_symbol_attributes): Zap trailing + whitespace. + +2001-10-08 Aldy Hernandez <aldyh@redhat.com> + + * doc/arm/c-arm.texi (ARM Options): Add arm9e documentation. + + * config/tc-arm.c (ARM_EXT_MAVERIK): New macro. + (cirrus_regtype): New enum. + (LONGEST_INST): Change to 10. + (CIRRUS_MODE1): New. + (CIRRUS_MODE2): New. + (CIRRUS_MODE3): New. + (CIRRUS_MODE4): New. + (CIRRUS_MODE5): New. + (CIRRUS_MODE6): New. + (insns): Add cirrus dsp instructions. + (ARM_EXT_MAVERIKSC_REG): New. + (cirrus_register): New. + (cirrus_mvf_register): New. + (cirrus_mvd_register): New. + (cirrus_mvfx_register): New. + (cirrus_mvdx_register): New. + (cirrus_mvax_register): New. + (ARM_EXT_MAVERIKsc_register): New. + (reg_table): Add cirrus registers. + (cirrus_valid_reg): New. + (cirrus_reg_required_here): New. + (do_c_binops_1): New. + (do_c_binops_2): New. + (do_c_binops_3): New. + (do_c_triple_4): New. + (do_c_triple_5): New. + (do_c_quad_6): New. + (do_c_dspsc_1): New. + (do_c_dspsc_2): New. + (do_c_shift_1): New. + (do_c_shift_2): New. + (do_c_ldst_1): New. + (do_c_ldst_2): New. + (do_c_ldst_3): New. + (do_c_ldst_4): New. + (do_c_binops): New. + (do_c_triple): New. + (do_c_quad): New. + (do_c_dspsc): New. + (do_c_shift): New. + (cirrus_parse_offset): New. + (do_c_ldst): New. + (md_parse_option): Add arm9e. + (md_show_usage): Same. + +2001-10-08 Tom Rix <trix@redhat.com> + + * config/tc-ppc (ppc_bf, ppc_biei) : Set first .bi lineno value to + location of next .bf + * config/obj-coff.c (coff_frob_symbol) : XCOFF does not use endndx. + +2001-10-07 Alan Modra <amodra@bigpond.net.au> + + * config/obj-elf.c: Standardize error/warning messages - don't + capitalise, no final period or newline, don't say "ignoring" for + as_bad messages. In some cases, change the wording to that used + elsewhere for similar messages. + (obj_elf_section_name): New function, split out from .. + (obj_elf_section): .. here. Correctly mask off SHF_MERGE if + entsize not specified. + +2001-10-05 Jakub Jelinek <jakub@redhat.com> + + * doc/as.texinfo: Document M and S ELF section flags. + +2001-10-05 Alan Modra <amodra@bigpond.net.au> + + * subsegs.c (subseg_text_p): Return 0 for absolute section. + * read.c (do_align): If in absolute section, warn about and ignore + non-zero fill pattern. + +2001-10-05 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-mn10300.c (tc_gen_reloc): Don't free + reloc->sym_ptr_ptr if it's not allocated. + +2001-10-04 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (prev_insn_reloc_type): Make it an array to hold a + relocation triple. + (prev_insn_fixp): Likewise. + (append_insn): Changed prototype to accept a relocation pointer. + (imm_reloc): Make it an array. + (offset_reloc): Likewise. + (md_assemble): Handle triple relocations. + (append_insn): Likewise. Add handling for some NewABI relocations. + (mips_no_prev_insn): Handle triple relocations. + (macro_build): Likewise. Add handling for some NewABI relocations. + Move handling for the 'u' case to append_insn(). + (mips16_macro_build): Handle triple relocations. + (macro_build_lui): Likewise. Don't handle _gp_disp as special symbol + for NewABI. + (mips_ip): Handle triple relocations. + (mips16_ip): Likewise. + (mips_force_relocation): Force handling of triple relocations + without symbols for NewABI. + (md_apply_fix): Add handling for some NewABI relocations. + +2001-10-05 Alan Modra <amodra@bigpond.net.au> + + * config/tc-i386.c (parse_register): If not producing code for + x86_64, reject x86_64 register name matches. + (md_assemble): Remove now redundant check for x86_64 regs. + +2001-10-04 Alan Modra <amodra@bigpond.net.au> + + * config/tc-ppc.c (md_assemble <DS relocs>): Test ppc_size as well + as BFD_DEFAULT_TARGET_SIZE. + (ppc_tc): Likewise. + (ppc_is_toc_sym): Likewise. + (md_apply_fix3): Likewise. + +2001-10-03 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (mips_64): Remove. + (mips_target_format): Move downwards in file, use HAVE_64BIT_OBJECTS + in it. + (mips_abi_level, mips_abi): New enum. + (mips_32bit_abi): Remove. + (HAVE*PRS): Use mips_abi instead of mips_32bit_abi. + (HAVE_NEWABI): New define. + (HAVE_64BIT_OBJECTS): New define. + (HAVE_32BIT_ADDRESSES): Don't return true for 64bit objects. + (HAVE_64BIT_ADDRESSES): New define, inverse of HAVE_32BIT_ADDRESSES. + (support_64bit_objects): New prototype. + (md_begin): Use mips_abi instead of mips_32bit_abi. Don't write + .reginfo section for n32, use .MIPS.options instead. + (support_64bit_objects): New function, code from md_parse_option. + (md_longopts): Add -n32 option. + (md_parse_option): Use mips_abi instead of mips_32bit_abi/mips64. + Add -n32 option. Protect with OBJ_ELF. + (s_mipsset): Use mips_abi instead of mips_32bit_abi. + (mips_elf_final_processing): Likewise. Don't write .reginfo section + for n32, use .MIPS.options instead. + +2001-10-03 Alan Modra <amodra@bigpond.net.au> + + * po/POTFILES.in: Regenerate. + * configure: Regenerate. + +2001-10-02 Alan Modra <amodra@bigpond.net.au> + + * config/tc-ppc.c (md_apply_fix3 <BFD_RELOC_CTOR>): Make it 64 + bits if target is 64 bit. + + * doc/as.texinfo (listing): Fix typo. + + * as.c (print_version_id): Use BFD_VERSION_STRING in place of + BFD_VERSION. + * Makefile.am (Makefile): Depend on bfd/configure.in. + Run "make dep-am". + * Makefile.in: Regenerate. + +2001-09-30 H.J. Lu <hjl@gnu.org> + + * config/obj-elf.c (obj_elf_parse_section_letters): Accept "am" + and "ams" for compatibility. + +2001-09-30 Hans-Peter Nilsson <hp@bitrange.com> + + * config/tc-sh.c (md_pcrel_from_section): Transformed from + md_pcrel_from. Handle pc-relativeness against link-time + symbol. Handle relativeness to elsewhere than the fixup. + * config/tc-sh.h (MD_PCREL_FROM_SECTION): Define. + (md_pcrel_from_section): Prototype. + + * Makefile.am: Update dependencies with "make dep-am". + * Makefile.in: Regenerate. + +2001-09-30 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (cmp_opcode): Define prototype. + (print_opcode_format, skip_whites): Likewise. + (convert_branch, m68hc11_new_insn): Likewise. + (build_dbranch_insn, build_indexed_byte): Likewise. + (build_reg_mode, find, find_opcode): Likewise. + (print_insn_format): Fix call to print_opcode_format. + (md_assemble): Fix call to build_dbranch_insn. + +2001-09-27 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c: Add missing prototypes. + +2001-09-26 Jeff Johnston <jjohnstn@redhat.com> + + * input-file.c (input_file_open): When reading the + first line looking for #NO_APP, prepare for the possibility + of finding #APP instead. Also fix algorithm to allow + white-space to follow either #NO_APP or #APP directives. + +2001-09-25 Geoff Berry <geoff.berry@bops.com> + + * listing.c (buffer_line): Don't write past the end of `line' when + EOF is reached. + +2001-09-25 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-mn10300.c (tc_gen_reloc): Don't emit an *ABS* + relocation for differences between symbols in a section other + than the one in which the difference is to be placed; apply + the relocation instead. + +2001-09-24 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arc.c: Add missing prototype. + (md_atof): Change type to int. Add missing prototype. + * config/tc-arc.h: Prototype exported functions. + +2001-09-22 Nick Clifton <nickc@cambridge.redhat.com> + + * as.c: Add missing function prototype. + * config/obj-aout.c: Fix compile time warning. + +2001-09-21 Bruno Haible <haible@clisp.cons.org> + + * config/tc-openrisc.c: Don't include <ctype.h>. + +2001-09-19 Martin Schwidefsky <schwidefsky@de.ibm.com> + + * gas/config/tc-s390.c: Add option -mwarn-areg-zero. + +2001-09-19 Alan Modra <amodra@bigpond.net.au> + + * config/tc-i370.c: Fix typo in last change. + +2001-09-19 Nick Clifton <nickc@cambridge.redhat.com> + + * doc/as.texinfo (Symbol Names): Improve documentation on local + labels and add documenation about dollar labels. + +2001-09-18 Bruno Haible <haible@clisp.cons.org> + + * as.h: Don't include <ctype.h>. + * as.c (main): For gettext, also set the LC_CTYPE locate facet. + * atof-generic.c: Include "safe-ctype.h" instead of <ctype.h>. + (atof_generic): Use ISDIGIT instead of isdigit. + * config/m68k-parse.y: Include "safe-ctype.h". + (yylex): Use ISDIGIT/ISALNUM instead of isdigit/isalnum. + * config/obj-elf.c: Include "safe-ctype.h". + (obj_elf_vtable_inherit): Use ISSPACE instead of isspace. + * config/obj-vms.c: Include "safe-ctype.h". + (Write_VMS_MHD_Records): Use TOUPPER instead of islower/toupper. + (VMS_Case_Hack_Symbol): Use ISUPPER/ISLOWER/TOUPPER/TOLOWER + instead of isupper/islower/toupper/tolower. + * config/tc-a29k.c: Include "safe-ctype.h" instead of <ctype.h>. + (insert_sreg): Use TOUPPER instead of islower/toupper. + (machine_ip): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead of + isalpha/isalnum/isupper/tolower. + (a29k_unrecognized_line, md_operand): Use ISDIGIT instead of + isdigit. + * config/tc-alpha.c: Include "safe-ctype.h" instead of <ctype.h>. + (md_undefined_symbol, s_alpha_ent): Use ISDIGIT instead of isdigit. + * config/tc-arc.c: Include "safe-ctype.h" instead of <ctype.h>. + (md_assemble): Use ISSPACE/ISALNUM instead of isspace/isalnum. + (arc_extoper): Use TOLOWER instead of isupper/tolower. + * config/tc-arm.c: Include "safe-ctype.h" instead of <ctype.h>. + (arm_psr_parse): Use ISALPHA instead of isalpha. + (accum0_required_here): Use ISALNUM instead of isalnum. + (do_ldrd): Use ISSPACE instead of isspace. + (decode_shift): Use ISALPHA instead of isalpha. + (insert_reg): Use TOUPPER instead of islower/toupper. + (arm_reg_parse): Use ISALPHA instead of isalpha. + (arm_parse_reloc): Use ISALNUM/ISPUNCT/TOLOWER instead of + isalnum/ispunct/tolower. + * config/tc-avr.c: Include "safe-ctype.h" instead of <ctype.h>. + (md_parse_option): Use TOLOWER instead of tolower. + (avr_operand): Use ISDIGIT/TOLOWER instead of isdigit/tolower. + * config/tc-cris.c: Include "safe-ctype.h" instead of <ctype.h>. + (cris_process_instruction): Use ISLOWER instead of islower. + (get_gen_reg): Use ISALNUM/ISDIGIT instead of isalnum/isdigit. + (get_spec_reg): Use TOLOWER/ISALNUM instead of isupper/tolower/isalnum. + (get_flags): Use ISSPACE instead of isspace. + * config/tc-d10v.c: Include "safe-ctype.h" instead of <ctype.h>. + (do_assemble): Use TOLOWER instead of tolower. + * config/tc-d30v.c: Include "safe-ctype.h" instead of <ctype.h>. + (do_assemble): Use TOLOWER instead of tolower. + (d30v_start_line): Use ISSPACE instead of isspace. + * config/tc-fr30.c: Include "safe-ctype.h" instead of <ctype.h>. + (fr30_is_colon_insn): Use TOLOWER instead of tolower. + * config/tc-h8300.c: Include "safe-ctype.h" instead of <ctype.h>. + (skip_colonthing, get_operand): Use ISDIGIT instead of isdigit. + * config/tc-h8500.c: Include "safe-ctype.h" instead of <ctype.h>. + (start_label): Use ISALPHA instead of isalpha. + * config/tc-hppa.c: Include "safe-ctype.h" instead of <ctype.h>. + (pa_ip): Use ISUPPER/ISLOWER/TOLOWER instead of + isupper/islower/tolower. + (pa_parse_number): Use ISDIGIT instead of isdigit. + (pa_chk_field_selector): Use TOLOWER instead of tolower. + (pa_stringer): Use ISDIGIT instead of isdigit. + * config/tc-i370.c: Include "safe-ctype.h" instead of <ctype.h>. + (register_name): Use ISALPHA instead of isalpha. + (i370_elf_suffix): Use ISALNUM/TOLOWER instead of + isalnum/islower/tolower. + (i370_addr_offset): Use ISDIGIT/ISALPHA instead of + isdigit/isalpha. + (i370_addr_cons): Use ISALPHA/ISXDIGIT instead of + isalpha/isxdigit. + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-i386.c: Include "safe-ctype.h" instead of <ctype.h>. + (md_begin): Use ISDIGIT/ISLOWER/ISUPPER/TOLOWER/ISALPHA + instead of isdigit/islower/isupper/tolower/isalpha. + (output_invalid): Use ISPRINT instead of isprint. + * config/tc-i860.c: Include "safe-ctype.h" instead of <ctype.h>. + (i860_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. + * config/tc-i960.c: Include "safe-ctype.h" instead of <ctype.h>. + (get_args): Use ISALNUM instead of isalnum. + * config/tc-ia64.c: Include "safe-ctype.h". + (dot_pred_rel): Use TOUPPER/ISDIGIT instead of toupper/isdigit. + (ia64_unrecognized_line): Use ISDIGIT instead of isdigit. + (ia64_parse_name): Likewise. + * config/tc-m32r.c: Include "safe-ctype.h" instead of <ctype.h>. + (assemble_two_insns): Use ISSPACE/ISALNUM/ISUPPER/TOLOWER + instead of isspace/isalnum/isupper/tolower. + * config/tc-m68hc11.c: Include "safe-ctype.h" instead of <ctype.h>. + (md_assemble): Use TOLOWER/ISALNUM instead of tolower/isalnum. + * config/tc-m68k.c: Include "safe-ctype.h" instead of <ctype.h>. + (mklower_table): Remove variable. + (mklower): Remove macro. + (insert_reg): Use TOUPPER instead of islower/toupper. + (md_begin): Remove initialization of mklower_table. + (s_reg): Use ISALNUM instead of isalnum. + (mri_assemble): Use ISUPPER/TOLOWER instead of isupper/tolower. + (parse_mri_condition): Use TOLOWER instead of isupper/tolower. + (build_mri_control_operand): Use TOLOWER instead of tolower. + (s_mri_else, s_mri_break, s_mri_next, s_mri_for): Likewise. + * config/tc-m88k.c: Include "safe-ctype.h" instead of <ctype.h>. + (md_assemble): Use ISSPACE instead of isspace. + (get_imm16): Use ISALNUM instead of isalnum. + (get_cnd): Use ISDIGIT/ISUPPER/TOLOWER instead of + isdigit/isupper/tolower. + (get_bf_offset_expression): Use ISALPHA/ISUPPER/TOLOWER + instead of isalpha/isupper/tolower. + (hexval): Use ISDIGIT/ISLOWER/ISUPPER instead of + isdigit/islower/isupper. + * config/tc-mcore.c: Include "safe-ctype.h" instead of <ctype.h>. + (mcore_s_section): Use ISSPACE instead of isspace. + (parse_reg): Use ISSPACE/TOLOWER/ISALNUM instead of + isspace/tolower/isalnum. + (parse_creg): Use ISSPACE/TOLOWER instead of isspace/tolower. + (parse_psrmod): Use TOLOWER instead of isascii/tolower. + (parse_exp, parse_mem, md_assemble): Use ISSPACE instead of + isspace. + * config/tc-mips.c: Include "safe-ctype.h" instead of <ctype.h>. + (mips_ip): Use ISSPACE/ISDIGIT instead of isspace/isdigit. + (mips16_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. + (my_getSmallExpression): Use ISDIGIT/TOLOWER instead of + isdigit/tolower. + (tc_get_register): Likewise. + (get_number): Use ISDIGIT/ISXDIGIT instead of isdigit/isxdigit. + (s_mips_ent): Use ISDIGIT instead of isdigit. + * config/tc-mn10200.c: Include "safe-ctype.h" instead of <ctype.h>. + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-mn10300.c: Include "safe-ctype.h" instead of <ctype.h>. + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-ns32k.c: Don't include <ctype.h>. + * config/tc-pdp11.c: Include "safe-ctype.h". + (mklower): Remove function. + (parse_reg): Use TOLOWER instead of mklower. + * config/tc-pj.c: Include "safe-ctype.h". + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-ppc.c: Include "safe-ctype.h" instead of <ctype.h>. + (register_name): Use ISALPHA instead of isalpha. + (ppc_elf_suffix): Use ISALNUM/TOLOWER instead of + isalnum/islower/tolower. + (md_assemble): Use ISSPACE instead of isspace. + (ppc_canonicalize_symbol_name): Use ISLOWER/TOUPPER instead of + islower/toupper. + * config/tc-s390.c: Include "safe-ctype.h" instead of <ctype.h>. + (register_name): Use ISALPHA instead of isalpha. + (s390_elf_suffix, s390_lit_suffix): Use ISALNUM instead of isalnum. + (md_gather_operands, md_assemble, s390_insn): Use ISSPACE instead of + isspace. + * config/tc-sh.c: Include "safe-ctype.h" instead of <ctype.h>. + (sh_elf_suffix): Use ISALNUM/TOLOWER instead of + isalnum/islower/tolower. + (IDENT_CHAR): Use ISALNUM instead of isalnum. + (parse_reg): Use TOLOWER instead of tolower. + (find_cooked_opcode): Use TOLOWER instead of isupper/tolower. + * config/tc-sparc.c: Include "safe-ctype.h" instead of <ctype.h>. + (sparc_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. + (parse_keyword_arg): Use ISALNUM instead of isalnum. + * config/tc-tahoe.c: Include "safe-ctype.h". + (tahoe_reg_parse): Use ISDIGIT instead of isdigit. + (tip_op): Use TOLOWER instead of isupper/tolower. + * config/tc-tic30.c: Include "safe-ctype.h". + (md_begin): Use ISLOWER/ISDIGIT/ISUPPER/TOLOWER/ISLOWER/ + ISALPHA instead of islower/isdigit/isupper/tolower/islower/isalpha. + (tic30_operand): Use TOLOWER instead of tolower. + (tic30_find_parallel_insn): Likewise. + (output_invalid): Use ISPRINT instead of isprint. + * config/tc-tic54x.c: Include "safe-ctype.h". + (tic54x_asg, tic54x_eval): Use ISALPHA instead of isalpha. + (lookup_version): Use TOUPPER instead of toupper. + (tic54x_var): Use ISALPHA instead of isalpha. + (tic54x_mlib): Use ISSPACE instead of isspace. + (subsym_iscons): Use TOUPPER instead of toupper. + (get_operands): Use ISSPACE instead of isspace. + (is_type): Use TOUPPER/ISDIGIT instead of toupper/isdigit. + (encode_indirect, encode_operand): Use TOUPPER instead of toupper. + (next_line_shows_parallel): Use ISSPACE instead of isspace. + (subsym_get_arg, subsym_substitute): Use ISDIGIT instead of isdigit. + (tic54x_start_line_hook, md_assemble, tic54x_start_label): Use + ISSPACE instead of isspace. + * config/tc-tic80.c: Include "safe-ctype.h". + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-v850.c: Include "safe-ctype.h" instead of <ctype.h>. + (system_register_name): Use ISDIGIT instead of isdigit. + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-vax.c: Include "safe-ctype.h" instead of <ctype.h>. + (vax_reg_parse): Use TOLOWER/ISDIGIT instead of + isupper/tolower/isdigit. + (vip_op): Use TOLOWER instead of isupper/tolower. + * config/tc-w65.c: Don't include <ctype.h>. + * config/tc-z8k.c: Include "safe-ctype.h" instead of <ctype.h>. + (tohex): Use ISDIGIT/ISLOWER instead of isdigit/islower. + (whatreg): Use ISDIGIT instead of isdigit. + * ecoff.c: Include "safe-ctype.h" instead of <ctype.h>. + (ecoff_directive_ent, ecoff_stab): Use ISDIGIT instead of isdigit. + * expr.c: Include "safe-ctype.h" instead of <ctype.h>. + (integer_constant): Use ISALNUM/TOUPPER instead of + isalnum/islower/toupper. + (operand): Use TOLOWER instead of isupper/tolower. + * gasp.c: Include "safe-ctype.h" instead of <ctype.h>. + (sb_strtol, level_0, change_base, doinstr): Use ISDIGIT instead + of isdigit. + (process_assigns, whatcond): Use TOUPPER instead of toupper. + (chartype_init): Use ISALPHA/ISDIGIT instead of isalpha/isdigit. + (main): For gettext, also set the LC_CTYPE locate facet. + * hash.c: Include "safe-ctype.h". + (main): Use TOLOWER instead of isupper/tolower. + * itbl-lex.l: Don't include <ctype.h>. + * listing.c: Include "safe-ctype.h" instead of <ctype.h>. + (listing_newline): Use ISCNTRL instead of isascii/iscntrl. Don't + omit non-ASCII characters. + (debugging_pseudo): Use ISSPACE instead of isspace. + * macro.c: Include "safe-ctype.h" instead of <ctype.h>. + (buffer_and_nest): Use ISALNUM instead of isalnum. + (get_token): Use ISALPHA/ISALNUM instead of isalpha/isalnum. + (define_macro): Use ISUPPER/TOLOWER instead of isupper/tolower. + (macro_expand_body): Use ISALNUM/ISDIGIT/ISUPPER/ISALPHA + instead of isalnum/isdigit/isupper/isalpha. + (check_macro): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead + of isalpha/isalnum/isupper/tolower. + * read.c: Include "safe-ctype.h" instead of <ctype.h>. + (read_a_source_file): Use ISUPPER/TOLOWER/ISDIGIT instead of + isupper/tolower/isdigit. + (s_mri_common): Use ISDIGIT instead of isdigit. + (s_mri_sect): Use ISDIGIT/TOUPPER instead of isdigit/toupper. + (s_float_space): Use ISALPHA instead of isalpha. + (ignore_rest_of_line): Use ISPRINT instead of isprint. + (float_cons): Use ISALPHA instead of isalpha. + (next_char_of_string): Use ISDIGIT/ISXDIGIT instead of + isdigit/isxdigit. + * symbols.c: Include "safe-ctype.h" instead of <ctype.h>. + (save_symbol_name): Use ISLOWER/TOUPPER instead of + islower/toupper. + (symbol_find_base): Use TOUPPER instead of islower/toupper. + (decode_local_label_name): Use ISDIGIT instead of isdigit. + +2001-09-18 Martin Schwidefsky <schwidefsky@de.ibm.com> + + * tc-s390.c (s390_insn): Add code to cope with 6 byte O_constants + in 64 bit mode and make format "e" work. + +2001-09-18 Alan Modra <amodra@bigpond.net.au> + + * dwarf2dbg.c (dwarf2_directive_file): Avoid signed/unsigned warning. + + * write.c (set_symtab): Update bfd_alloc declaration. Use a temp + var to ensure bfd_alloc arg is the right type. + (write_object_file): Cast args of bfd_seek. Replace bfd_write with + bfd_bwrite. + + * config/obj-coff.c: Replace calls to bfd_write with calls to + bfd_bwrite. Cast args of bfd_seek. + + * config/obj-elf.c (obj_elf_change_section): Avoid signed/unsigned + warning. + + * config/tc-mn10300.c (set_arch_mach): Make param unsigned. + + * config/tc-tic54x.c (tic54x_mlib): Replace bfd_read call with + call to bfd_bread. + +2001-09-15 Hans-Peter Nilsson <hp@bitrange.com> + + * config/tc-sh.h (sh_force_relocation): Prototype. + (struct fix): Forward declare. + * config/tc-sh.c (type sh_operand_info): Move to top of file. + (cons, s_align_bytes): Remove old-type declarations. + (sh_elf_suffix, parse_reg, dot, parse_exp, parse_at, get_operand, + get_operands, get_specific, insert, build_relax, + insert_loop_bounds, build_Mytes): Prototype. + (little): Make static. Prototype. + (check, tc_Nout_fix_to_chars): Delete unused functions. + +2001-09-14 Eric Christopher <echristo@redhat.com> + + * config/tc-mips.c (md_parse_option): Remove setting mips_64 via + -mgp32/mgp64. + +2001-09-14 Kevin Lo <kevlo@openbsd.org> + + * configure.in: Add arm-openbsd target. + * configure: Regenerate. + +2001-09-14 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * configure.in: Change machine triplets from mips-*-linux-gnu* to + mips*-*-linux*. + +2001-09-12 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (append_insn): Don't rightshift BFD_RELOC_16_PCREL. + +2001-09-11 Richard Henderson <rth@redhat.com> + + * config/tc-alpha.c (alpha_elf_section_letter): New. + (alpha_elf_section_flags): New. + * config/tc-alpha.h (md_elf_section_letter): New. + (md_elf_section_flags): New. + * config/tc-ia64.c (ia64_elf_section_letter): New. + * config/tc-ia64.h (md_elf_section_letter): New. + +2001-09-11 Jakub Jelinek <jakub@redhat.com> + + * config/obj-elf.c (obj_elf_parse_section_letters): Use 'M' instead + of 'm', 'S' instead of 's'. Update bad_msg. + * config/tc-ppc.c (ppc_section_letter): Update bad_msg. + * config/tc-i370.c (i370_sectioN_letter): Update bad_msg. + +2001-09-09 Alan Modra <amodra@bigpond.net.au> + + * expr.c (expr): Move code setting "retval" to the end of the loop, + and rearrange for efficiency. For "PIC code" subtraction, use + "rightseg" rather than recalculating. For "symbol OP symbol" + subtract, set "retval" to absolute_section if symbols in same + section. + * symbols.c (resolve_symbol_value): Resolve "sym +/- expr" to an + O_symbol. Simplify a +/- b code. Allow equality and non-equality + comparisons on symbols from any section. Allow other comparison + operators as for subtraction. + (symbol_equated_reloc_p): New predicate function. + * symbols.h (symbol_equated_reloc_p): Declare. + * write.c (relax_segment <rs_machine_dependent>): Ensure segment + for expression syms is set correctly. + (adjust_reloc_syms): Use symbol_equated_reloc_p. + (write_relocs): Likewise. + (write_object_file): Likewise. + * config/tc-mips.c (md_estimate_size_before_relax): Likewise. + * config/tc-i386.c (md_assemble <Output jumps>): Don't lose part + of a complex expression when setting up frag_var. + +2001-09-07 Richard Henderson <rth@redhat.com> + + * config/tc-alpha.c (alpha_reloc_op_tag): Replace need_seq with + require_seq and allow_seq. Let !literal omit the sequence number. + (tokenize_arguments): Reject sequence numbers of !allow_seq. + +2001-09-08 Jakub Jelinek <jakub@redhat.com> + + * config/tc-sparc.c (md_apply_fix3): Handle relocs against SEC_MERGE + section symbols the same way as externs. + +2001-09-07 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (s_mipsset): Reallow unrestricted use of .set mipsX + pseudo-op. + +2001-09-07 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (append_insn): Handle BFD_RELOC_16_PCREL. + (macro_build): Use BFD_RELOC_16_PCREL_S2 only for embedded + PIC, BFD_RELOC_16_PCREL for the rest. + (mips_ip): Likewise. + (md_pcrel_from): return the right offset for the differently shifted + pcrel relocs. + (md_apply_fix): Handle BFD_RELOC_16_PCREL. + +2001-09-05 Richard Henderson <rth@redhat.com> + + * config/tc-ia64.c (FUNC_IPLT_RELOC): New. + (pseudo_func): Add @iplt. + (pseudo_opcode): Add data16 and data16.ua. + (md_begin): Set iplt pseudo. + (ia64_cons_fix_new): Handle 16 byte iplt reloc specially. + +2001-09-04 Richard Henderson <rth@redhat.com> + + * config/tc-alpha.c (struct alpha_insn): Make sequence scalar long. + (MACRO_LITERAL, MACRO_BASE, MACRO_BYTOFF, MACRO_JSR): Remove. + (alpha_macros): Remove occurrences of same. + (O_lituse_addr, O_gprel): New. + (DUMMY_RELOC_LITUSE_*): New. + (s_alpha_ucons, s_alpha_arch): Prototype. + (alpha_reloc_op): Construct elements via DEF macro. + (ALPHA_RELOC_SEQUENCE_OK): Remove. + (struct alpha_reloc_tag): Rename from alpha_literal_tag; rename + members to not be literal specific. + (next_sequence_num): New. + (md_apply_fix3): Cope with missing GPDISP_LO16. Adjust for + added/removed BFD relocations. + (alpha_force_relocation, alpha_fix_adjustable): Likewise. + (alpha_adjust_symtab_relocs): Handle GPDISP relocs as well. + (tokenize_arguments): Parse ! relocations properly. + (find_macro_match): Delete unused macro argument types. + (assemble_insn): Add reloc parameter; emit that instead of the + default as appropriate. + (get_alpha_reloc_tag): New. Split from ... + (emit_insn): ... here. Allocate a reloc tag for GPDISP. + (assemble_tokens): Don't search macros if user relocation present. + Copy reloc sequence number to insn struct. + (emit_ldgp): Remove user reloc handling. + (load_expression, emit_lda, emit_ldah, emit_ir_load): Likewise. + (emit_loadstore, emit_ldXu, emit_ldil, emit_stX): Likewise. + (emit_sextX, emit_division, emit_jsrjmp, emit_retjcr): Likewise. + * config/tc-alpha.h (tc_adjust_symtab): Always define. + (struct alpha_fix_tag): Name members less literal specific. + +2001-09-04 Jeffrey A Law (law@cygnus.com) + + * tc-h8300.c (tc_gen_reloc): Give an error if we try to take the + address of two symbols in different sections. + +2001-08-31 Eric Christopher <echristo@redhat.com> + Jason Eckhardt <jle@redhat.com> + + * config/tc-mips.c (mips_cpu_info): Add support for mipsisa32, + 5kc, and 20kc. Clean up old entries. + +2001-08-31 J"orn Rennecke <amylaar@redhat.com> + Jeff Law <law@redhat.com> + + * config/tc-h8300.c (build_bytes): For OBJ_ELF, make relocation's + offset match H8 ELF spec. + (md_section_align): Alternate implementation for BFD_ASSEMBLER. + (md_apply_fix): Fix argument and return types for BFD_ASSEMBLER. + + * tc-h8300.c (relocation mappings): Remove. Moved to tc-h8300.h. + (build_bytes): Mark fixups for PCrel branches as signed. For + OBJ_ELF, make sure the reloc's offset points to the first byte + to be modified. + (md_convert_frag): Update definiton based on BFD_ASSEMBLER. + * tc-h8300.h (relocation mappings): Add. + +2001-08-30 J"orn Rennecke <amylaar@redhat.com> + + * tc-h8300.c (tc_crawl_symbol_chain, tc_headers_hook): Don't + define for BFD_ASSEMBLER. + (tc_reloc_mangle): Likewise. + (tc_gen_reloc): New function for BFD_ASSEMBLER. + +2001-08-29 Jeffrey A Law (law@cygnus.com) + + * config/tc-h8300.c (h8300hmode): Record the machine type + if BFD_ASSEMBLER is defined. + (h8300smode, md_begin): Similarly. + +2001-08-29 Joel Sherrill <joel@OARcorp.com> + + * configure.in (i[3456]86-*-rtems*, m68*-*-rtems*): Change + default from coff to elf. + * configure: Regenerate. + +2001-08-29 J"orn Rennecke <amylaar@redhat.com> + + * tc-h8300.c: If OBJ_ELF, include elf/h8.h, and define + assorted coff relocations to the corresponding elf relocations. + * tc-h8300.h (TARGET_ARCH, TARGET_FORMAT): Define appropriately. + + * configure.in: Add case for h8300-*-elf. + * configure: Regenerate. + +2001-08-29 J"orn Rennecke <amylaar@redhat.com> + + * doc/internals.texi (MD_PCREL_FROM_SECTION): Change + documentation to reflect reality. + +2001-08-27 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (load_address): Reflect change to MAX_GPREL_OFFSET. + (macro): Reflect change to MAX_GPREL_OFFSET. + +2001-08-27 Torbjorn Granlund <tege@swox.com> + Staffan Ulfberg <staffanu@swox.se> + Linus Nordberg <linus@swox.se> + Alan Modra <amodra@bigpond.net.au> + + * configure.in: Recognise powerpc*le*, not just powerpcle*. + * configure: Regenerate. + * config/tc-ppc.c (PPC_LO, PPC_HI, PPC_HA, PPC_HIGHER, + PPC_HIGHERA, PPC_HIGHEST, PPC_HIGHESTA, SEX16): New macros. + (md_assemble): Use them. + (ppc_machine): Support stub for ELF64 as well as XCOFF. + (md_pseudo_table): Add "llong", "quad". + (md_parse_option): Match default_cpu of powerpc*. + (ppc_arch): Likewise. + (ppc_subseg_align): Only for OBJ_XCOFF. + (ppc_target_format): Return elf64-powerpc strings for 64 bit ELF. + (md_begin): Select PPC_OPCODE_64 for 64 bit. + (ppc_insert_operand): Don't bother testing 'file' before calling + as_bad_where. Use as_bad_where for operand->insert errors. + (mapping): Add ELF64 relocation modifiers. + (ppc_elf_suffix): Replace symbol on BFD_RELOC_PPC64_TOC reloc + expressions with abs_symbol. + (ppc_elf_cons): Correct offset for little endian targets. + (ppc_elf_frob_symbol): New. + (md_assemble): Add support for 64 bit ELF relocs. + (ppc_tc): Ensure 8 byte alignment when 64 bit. + (ppc_is_toc_sym): Only define for OBJ_XCOFF and OBJ_ELF. Match + ".toc" section for 64 bit ELF. + (ppc_fix_adjustable): New. Macro body moved from tc-ppc.h. + (md_apply_fix3): Silence warning with ATTRIBUTE_UNUSED. Only do + the ppc_is_toc_sym check for OBJ_XCOFF and OBJ_ELF. For 64 bit, + use BFD_RELOC_PPC64_TOC16_DS instead of BFD_RELOC_PPC_TOC16. + Expand on comments, error message. Add support for 64 bit relocs, + and use PPC_HI etc. macros. + * config/tc-ppc.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. + (HANDLE_ALIGN): Define to generate nops in code sections rather + than zeros. + (TC_FORCE_RELOCATION): Force for BFD_RELOC_PPC64_TOC. + (ELF_TC_SPECIAL_SECTIONS): Add 64 bit ELF sections. + (tc_fix_adjustable): Move body of macro to tc-ppc.c. + (ppc_fix_adjustable): Declare. + (tc_frob_symbol): Define. + (ppc_elf_frob_symbol): Declare. + +2001-08-26 Andreas Jaeger <aj@suse.de> + + * config/tc-s390.c: Add missing prototypes + (md_gather_operands): Make static. + +2001-08-26 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.h (MAX_GPREL_OFFSET): Change it to the maximum + allowed value, not the word beyond maximum. + * config/tc-mips.c (macro_build_lui): Code cleanup. + (macro): Reflect change to MAX_GPREL_OFFSET. + (mips_ip): Check explicitly against S_EX_NONE. + (my_get_SmallExpression): parse for %gp_rel, not %gprel. + (md_apply_fix): Code cleanup. + +2001-08-24 Andreas Jaeger <aj@suse.de> + + * config/tc-ppc.h: Fix prototype declaration. + +2001-08-23 Jakub Jelinek <jakub@redhat.com> + + * config/tc-ia64.c (dot_endp): Set function symbol sizes. + * config/obj-elf.c (obj_elf_size): When size is constant, free + and clear symbol_get_obj(sym)->size if any. + +2001-08-21 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (md_begin): Warn about incompatibility between + -march=FOO and -mipsN option, continue with default ISA. + +2001-08-21 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (md_parse_option): #ifdef the + traditional/non-traditional names as it is done in mips_target_format. + +2001-08-20 Richard Henderson <rth@redhat.com> + + * config/tc-alpha.h (MD_APPLY_FIX3): Define. + * config/tc-alpha.c (md_apply_fix3): Rename from md_apply_fix; + use seg parameter instead of now_seg. + +2001-08-18 H.J. Lu <hjl@gnu.org> + + * config/tc-mips.c (show): Add the missing prototype. + +2001-08-18 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (S_EX_*): New enum for my_getSmallExpression() + return values. + (mips_ip): Use the new return values instead of characters. Add + support for %higher and %highest. + (LP): Remove. + (RP): Remove. + (my_getSmallExpression): Make parsing case insensitive and more + reliable. Add support for %higher and %highest. Further support to + parse %gprel and %neg is implemented but currently deactivated. + +2001-08-17 Alan Modra <amodra@bigpond.net.au> + + * ecoff.c (ecoff_frob_symbol): Remove casts from bfd_get_gp_size. + (ecoff_build_symbols): Likewise. + * read.c (s_lcomm_internal): Fix signed/unsigned warning. + +2001-08-16 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (mips_elf_final_processing): Set elf header flags + for n32 ABI if appropriate. + +2001-08-16 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (cons_fix_new_mips): Remove. + * config/tc-mips.h (TC_CONS_FIX_NEW): Remove. + (cons_fix_new_mips): Remove. + +2001-08-14 Jeff Johnston <jjohnstn@redhat.com> + + * expr.c (operand)[LITERAL_PREFIXDOLLAR_HEX]: Treat $L as + a label, not a hex constant. + +2001-08-13 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-v850.h: Add missing prototypes. + +2001-08-12 Martin Schwidefsky <schwidefsky@de.ibm.com> + + * config/tc-s390.c (s390_elf_cons): Correct fixups for PLT + relocations. + +2001-08-12 TAKAI Kousuke <takai@vlsi.kuee.kyoto-u.ac.jp> + + * config/tc-sparc.c (cons_fix_new_sparc): Move + `sparc_no_align_cons = 0;' to... + (s_uacons): ...here so that sparc_no_align_cons will get + cleared properly. + +2001-08-11 Kazu Hirata <kazu@hxi.com> + + * config/tc-mips.c: Fix a comment typo. + +2001-08-10 Richard Sandiford <rsandifo@redhat.com> + + * config/tc-mips.c (move_register): New function. + (macro_build): Remove OPCODE_IS_MEMBER's gp32 argument. + (mips_ip): Likewise. + (macro2): Use move_register rather than macro_build for moves. + (mips16_macro): Likewise. + (macro): Likewise. Handle M_MOVE. + +2001-08-10 Andreas Jaeger <aj@suse.de> + + * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes + to build warnings. + * configure: Regenerate. + +2001-08-10 Alan Modra <amodra@bigpond.net.au> + + * as.h (alloca): Don't declare if __GNUC__. Remove an old comment. + Comment indentation of #pragma. + * macro.c (alloca): Likewise. + + * config/tc-ppc.c: Revert 2001-08-08. + +2001-08-09 Alan Modra <amodra@bigpond.net.au> + + * symbols.c: Add missing prototypes. + * config/e-i386elf.c: Likewise. + * config/e-i386coff.c: Likewise. + * config/e-i386aout.c: Likewise. + * config/obj-coff.c: Likewise. + (def_symbol_in_progress, stack): Move definition. + * config/obj-elf.c: Add missing prototypes. + (obj_elf_change_section): Make static. + (obj_elf_parse_section_letters): Likewise. + (obj_elf_section_word): Likewise. + (obj_elf_section_type): Likewise. + +2001-08-08 Alan Modra <amodra@bigpond.net.au> + + From 1999-10-25 Torbjorn Granlund <tege@swox.com> + * config/tc-ppc.c (md_apply_fix3): Replace haphazard code for + determining reloc type with code reading operands->reloc field. + +2001-08-08 Alan Modra <amodra@bigpond.net.au> + + * config/obj-elf.c (elf_copy_symbol_attributes): Make it a global + function, and expand old obj-elf.h OBJ_COPY_SYMBOL_ATTRIBUTES here. + * config/obj-elf.h (elf_copy_symbol_attributes): Declare. + (OBJ_COPY_SYMBOL_ATTRIBUTES): Call elf_copy_symbol_attributes. + + * output-file.c (output_file_create): Don't try to open a second + time as it's unnecessary. FOPEN_W was undefined too. + +2001-08-07 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (macro_build): Replace magic constants by defines. + (mips_ip): Likewise. Typo. + +2001-08-04 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (mips_abi_string): Initialize with NULL instead + of 0. + (RELAX_ENCODE): Replace bfd_vma by valueT. + (load_address): Formatting. + (macro): Likewise. Code cleanup. Typo. + (macro2): Formatting. + (md_parse_option): Typo. + (s_mipsset): Reorder cases to look nicer. + (md_estimate_size_before_relax): Formatting. Code cleanup. + (mips_elf_final_processing): Check against NULL instead of 0. + (md_obj_end): Remove ugly `' in message string. + (s_mips_ent): Remove ugly `' in message string. + +2001-07-30 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (md_begin): Take -mcpu value into account even when + -mipsX is specified. Make both -mcpu/-march and -mcpu/-mtune pairs + mutually exclusive (if they are different). + (md_parse_option): Warn if an -march/-mtune/-mcpu/-m<cpu> option is + set more than once. + +2001-08-03 Richard Sandiford <rsandifo@redhat.com> + + * config/tc-mips.c (md_apply_fix): Don't subtract the symbol value + from GPREL addends. + +2001-08-02 Richard Sandiford <rsandifo@redhat.com> + + * doc/c-mips.tex (-mgp32, -mfp32): Added -mfp32, unified with -mgp32. + * config/tc-mips.c (mips_fp32, mips_32bit_abi): New static variables. + (md_long_opts): Add -mfp32 option. + (md_parse_option): Handle it. Set mips_32bit_abi given -mabi=32. + (md_show_usage): Show usage for -mfp32 and -mgp32. + (HAVE_32BIT_GPRS, HAVE_32BIT_FPRS): New macros. + (HAVE_64BIT_GPRS, HAVE_64BIT_FPRS): New macros, inverse of the above. + (HAVE_32BIT_ADDRESSES): New macro. + (load_register): Use HAVE_32BIT_GPRS to determine the register width. + (load_address): Use HAVE_32BIT_ADDRESSES to determine the address size. + (s_cprestore, s_cpadd): Likewise. + (macro): Use HAVE_32BIT_GPRS to determine the width of registers + used in branch and M_LI_D macros. Use HAVE_64BIT_FPRS to determine + the width registers used in M_LI_DD macros. Use HAVE_32BIT_ADDRESSES + to determine the width of addresses in load, store and jump macros. + (macro2): Use HAVE_32BIT_GPRS to determine the width of registers + used in set instructions; do not check the address size for them. + Use HAVE_32BIT_ADDRESSES to determine the width of addresses in + unaligned load and store macros. + (mips_ip): Use the new macros to check the width of a register when + processing float constants. Force a constant into memory if it is + destined for an FPR and the FPRs are wider than the GPRs. Warn about + odd FPR numbers if HAVE_32BIT_FPRS. Use HAVE_32BIT_GPRS rather + than mips_gp32 to select synthetic instructions. + (macro_build): Use HAVE_32BIT_GPRS rather than mips_gp32 to select + synthetic instructions. + +2001-08-01 Christian Groessler <cpg@aladdin.de> + + * config/tc-z8k.c (parse_reg): If a string starts with "r", "rl", + "rh", "rr", "rq", or "sp" then don't automatically assume + it's a register name. Check whether there is a number + following. + +2001-08-01 Alan Modra <amodra@bigpond.net.au> + + * config/tc-i386.c (lex_got): Match lower case relocation tokens. + Don't allocate more space than necessary for the input line copy. + +2001-08-01 Alan Modra <amodra@bigpond.net.au> + + * read.c: Standardize error/warning messages - don't capitalise, no + final period or newline, don't say "ignored" or "zero assumed" for + as_bad messages. In some cases, change the wording to that used + elsewhere for similar messages. + * app.c: Likewise. + * as.c: Likewise. + * atof-generic.c: Likewise. + * cgen.c: Likewise. + * cond.c: Likewise. + * depend.c: Likewise. + * dwarf2dbg.c: Likewise. + * ecoff.c: Likewise. + * expr.c: Likewise. + * frags.c: Likewise. + * input-file.c: Likewise. + * input-scrub.c: Likewise. + * listing.c: Likewise. + * output-file.c: Likewise. + * stabs.c: Likewise. + * subsegs.c: Likewise. + * symbols.c: Likewise. + * write.c: Likewise. + * ecoff.c (ecoff_directive_end): Test for missing name by + comparing input line pointers rather than reading string. + (ecoff_directive_ent): Likewise. + * read.c (s_set): Likewise. + (s_align): Report a warning rather than an error for + alignment too large. + (s_comm): Check for missing symbol name. + (s_lcomm_internal): Likewise. + (s_lsym): Likewise. + (s_globl): Use is_end_of_line instead of looking for '\n'. + (s_lcomm_internal): Likewise. + (ignore_rest_of_line): Report a warning rather than an error. + +2001-07-31 Geoffrey Keating <geoffk@redhat.com> + + * config/tc-ppc.c (ppc_elf_validate_fix): It's OK to have + any kind of relocation against a not-loaded section. + +2001-07-30 Alan Modra <amodra@bigpond.net.au> + + * config/obj-elf.c (obj_elf_symver): Temporarily modify lex_type + to include '@' in symbol names when parsing versioned symbols + rather than calling get_symbol_end multiple times. + * config/tc-i370.c (register_name): Format fixes. Don't call + get_symbol_end after parsing number. + * config/tc-mn10200.c (data_register_name): Format fixes. Hoist + code out of conditional. + (address_register_name): Likewise. + (other_register_name): Likewise. + * config/tc-mn10300.c (r_register_name): Likewise. + (xr_register_name): Likewise. + (data_register_name): Likewise. + (address_register_name): Likewise. + (other_register_name): Likewise. + * config/tc-ppc.c (register_name): Likewise. + * config/tc-s390.c (register_name): Likewise. + +2001-07-27 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix bsr + and bra relax: update fragP->fr_fix after the fixup. + +2001-07-27 Tracy Kuhrt <Tracy.Kuhrt@microchip.com> + + * read.c (s_set): Check for missing symbol name. + +2001-07-26 Alan Modra <amodra@bigpond.net.au> + + * write.c (relax_segment <rs_space>): Account for fr_fix. + +2001-07-25 H.J. Lu <hjl@gnu.org> + + * config/tc-mips.c (md_estimate_size_before_relax): Make sure + we treat weak like extern only for ELF. + (mips_fix_adjustable): Make sure we don't adjust extern/weak + symbols only for ELF. + +2001-07-25 Chris Demetriou <cgd@broadcom.com> + + * config/tc-mips.c: Fix spelling error in comment. + +2001-07-25 Dave Brolley <brolley@redhat.com> + + * app.c (LEX_IS_PARALLEL_SEPARATOR): New macro. + (IS_PARALLEL_SEPARATOR): New macro. + (do_scrub_begin): Set up characters in tc_parallel_separator_chars + as LEX_IS_PARALLEL_SEPARATOR, if it is defined. + (do_scrub_chars): Handle LEX_PARALLEL_SEPARATOR chars like + LEX_LINE_SEPARATOR except that we go to state 1 (as if the label has + been seen). + +2001-07-24 Alan Modra <amodra@bigpond.net.au> + + * Makefile.am (DEP_FLAGS): Define, add -DOBJ_MAYBE_ELF. + (DEP1, DEPTC, DEPOBJ, DEP2): Use it. + Update dependencies with "make dep-am". + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + +2001-07-23 Kazu Hirata <kazu@hxi.com> + + * config/tc-alpha.h: Fix formatting. + * config/tc-arc.c: Likewise. + * config/tc-d10v.h: Likewise. + * config/tc-hppa.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-i386.h: Likewise. + * config/tc-i960.h: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-ia64.h: Likewise. + * config/tc-m32r.c: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-m88k.c: Likewise. + * config/tc-ns32k.c: Likewise. + * config/tc-pdp11.c: Likewise. + * config/tc-pj.h: Likewise. + * config/tc-s390.c: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-sparc.h: Likewise. + * config/tc-tic80.c: Likewise. + * config/tc-w65.h: Likewise. + +2001-07-23 Alan Modra <amodra@bigpond.net.au> + + * symbols.c (S_GET_VALUE): Don't treat O_constant and local + symbols specially. Always resolve, adding fr_address to value. + * write.c (write_object_file): Don't add fr_address to sym values. + (relax_frag): Likewise. + (relax_segment): Likewise. + * config/obj-ieee.c (do_symbols): Likewise. + * config/tc-cris.c (md_convert_frag): Likewise. + * config/tc-fr30.c (md_convert_frag): Likewise. + * config/tc-i386.c (md_convert_frag): Likewise. + * config/tc-m32r.c (md_convert_frag): Likewise. + * config/tc-m68hc11.c (md_convert_frag): Likewise. + * config/tc-mcore.c (md_convert_frag): Likewise. + * config/tc-mips.c (mips16_extended_frag): Likewise. + * config/tc-ns32k.c (md_convert_frag): Likewise. + * config/tc-m68k.c (md_convert_frag_1): Likewise. + (BRANCHBWL, BRABSJUNC, BRABSJCOND, BRANCHBW, FBRANCH, DBCCLBR, + DBCCABSJ, PCREL1632, PCINDEX, ABSTOPCREL): Decrement. + (md_relax_table): Remove first four entries. Format. + (md_estimate_size_before_relax): Remove old_fix. Don't bother + setting fr_var. Simplify byte branch checks. + +2001-07-23 Alan Modra <amodra@bigpond.net.au> + + * config/tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Remove + "isbranch" param as all calls have it set. + (pa_parse_neg_cmpsub_cmpltr): Likewise. + (pa_parse_nonneg_add_cmpltr): Likewise. Remember result of + strcasecmp in "nullify" var. + (pa_parse_neg_add_cmpltr): Likewise. + (pa_ip): Don't "save_s" unnecessarily. Update calls to above + functions. Don't print wrong conditions in error messages. + +2001-07-23 Andreas Jaeger <aj@suse.de> + + * config/tc-s390.c (s390_force_relocation): Removed. + + * config/tc-s390.h: Remove double declaration of + TC_FORCE_RELOCATION. + +2001-07-22 H.J. Lu <hjl@gnu.org> + + * config/tc-mips.c (s_mips_end): Remove unused variables. + (s_mips_frame): Add ATTRIBUTE_UNUSED. + +2001-07-17 Andreas Schwab <schwab@suse.de> + + * config/tc-m68k.c (md_pseudo_table) [OBJ_ELF]: Add .file and + .loc. + (md_assemble) [OBJ_ELF]: Call dwarf2_emit_insn before emitting + insn. + * config/tc-m68k.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. + +2001-07-17 matthew green <mrg@eterna.com.au> + + * config/tc-i386.c (comment_chars): Don't use '/' as comment start if + TE_NetBSD. + (line_comment_chars): Set to '/' if TE_NetBSD. + +2001-07-14 matthew green <mrg@eterna.com.au> + + * configure.in (i386-*-netbsdelf*): New target. + * configure: Regenerate. + +2001-07-10 Mark Elbrecht <snowball3@softhome.net> + + * config/obj-coff.c (coff_frob_symbol): Don't merge if the storage + class of the non-debug symbol is C_NULL. + +2001-07-10 Anders Norlander <anorland@synergenix.se> + + * doc/as.texinfo (Incbin): Fix grammatical errors. + +2001-07-10 Nick Clifton <nickc@cambridge.redhat.com> + + * depend.c: Use FOPEN_.. macros in calls to fopen(). + * input-file.c: As above. + * itbl-ops.c: As above. + * listing.c: As above. + * output-file.c: As above. + * read.c: As above. + +2001-07-08 Anders Norlander <anorland@synergenix.se> + + * read.c (s_incbin): New .incbin function. + * read.c (potable): Add "incbin" pseudo-op. + * read.h: Add s_incbin prototype. + * doc/as.texinfo (incbin): Document .incbin pseudo-op. + * NEWS: Mention new feature. + +2001-07-07 Nick Clifton <nickc@cambridge.redhat.com> + + * ecoff.c (add_file): Only set debug_type to DEBUG_NONE if it is + DEBUG_UNSPECIFIED. + +2001-07-06 John Healy <jhealy@redhat.com> + + * cgen.c (gas_cgen_save_fixups): Modified to allow more than one + set of fixups to be stored. + (gas_cgen_restore_fixups): Modified to allow the fixup chain to be + restored to be chosen from any that are saved. + (gas_cgen_swap_fixups): Modified to allow the current set of + fixups to be swapped with any other set that has been saved. + (gas_cgen_initialize_saved_fixups_array): New routine. + * cgen.h: Modifed prototypes for gas_cgen_save_fixups, + gas_cgen_restore_fixups, and gas_cgen_swap_fixups. Added definitions + or MAX_SAVED_FIXUP_CHAINS. + * config/tc-m32r.c (assemble_two_insns): Changed calls to fixup + store, swap and restore fuctions to reflect the new interface. + +2001-07-06 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-m68k.c (md_estimate_size_before_relax): Catch and + ignore empty, ineffectual alignment frags when deciding if a + branch can be short. + +2001-07-05 Steve Ellcey <sje@cup.hp.com> + + * config/tc-ia64.c (special_section): Add SPECIAL_SECTION_INIT_ARRAY + and SPECIAL_SECTION_FINI_ARRAY. + (special_section_name): Add .init_array and .fini_array. + (md_pseudo_table): Add init_array and fini_array. + (md): Add pointer_size and pointer_size_shift fields. + (setup_unwind_header): New static function. + (output_unw_records): Modify to use setup_unwind_header. + (generate_unwind_image, dot_endp): Modify to use md.pointer_size and + md.pointer_size_shift. + (md_begin): Initialize md.pointer_size and md.pointer_size_shift. + +2001-07-05 Ben Elliston <bje@redhat.com> + + * README (Supported platforms): m88k no longer suffers bitrot. + + * config/tc-m88k.c (md_pseudo_table): Remove redundant "global". + +2001-07-05 Alan Modra <amodra@bigpond.net.au> + + * struc-symbol.h (struct local_symbol): Rename lsy_offset to + lsy_value. Correct typos in comments. + * symbols.c (local_symbol_make): Update for name change. + (local_symbol_convert): Likewise. + (colon): Likewise. + (S_GET_VALUE): Likewise. + (S_SET_VALUE): Likewise. + (print_symbol_value_1): Likewise. + (resolve_symbol_value): Likewise. Don't divide local sym values + by OCTETS_PER_BYTE twice. + +2001-07-04 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (md_pseudo_table): Add 2byte, 4byte, and 8byte. + + * config/tc-ia64.c (is_conditional_branch): Rewrite to exclude mod + sched branches. + +2001-07-05 Ben Elliston <bje@redhat.com> + + * read.c (s_fill): Correct spelling error in comments. + + * doc/c-m88k.texi: New file. + * doc/Makefile.am (CPU_DOCS): Add c-m88k.texi. + * doc/Makefile.in: Regenerate. + * doc/all.texi: Set M880X0. + * doc/as.texinfo: Hook in m88k-dependent documentation. + +2001-07-04 Eric Christopher <echristo@redhat.com> + + * doc/c-mips.texi (MIPS Opts): Document 12000 as valid cpu. + + * config/tc-mips.c (mips_cpu_info_table): Add rm5200, rm5231, rm5261, + and rm5721 as valid cpu strings. + (md_show_usage): Add rm5200, rm5231, rm5261, rm5721. + +2001-07-04 Richard Sandiford <rsandifo@redhat.com> + + * config/tc-mips.c (md_apply_fix): Prevent addend from becoming zero + if it's expected to be non-zero. + +2001-07-03 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-sh.c (sh_frob_section): Replace symbol_get_frag() with + fscan->fx_frag. + + * write.c (TC_FINALIZE_SYMS_BEFORE_SIZE_SEG): Default to 1. + (write_object_file): Set finalize_syms to + TC_FINALIZE_SYMS_BEFORE_SIZE_SEG just before size_segs is + called. + + * doc/internals.texi: Document + TC_FINALIZE_SYMS_BEFORE_SIZE_SEG. + +2001-07-02 Alan Modra <amodra@bigpond.net.au> + + * config/tc-ppc.c: Formatting fixes. + +2001-07-01 Ben Elliston <bje@redhat.com> + + * config/tc-m88k.c: Back out warning fixes from 2001-06-24, as + they cause some subtle breakage. Will fix them again later. + +2001-06-28 Nick Clifton <nickc@cambridge.redhat.com> + + * config/obj-coff.c (obj_coff_ln): Treat a .ln directive + outside of a function as a .appline directive. + +2001-06-28 Eric Christopher <echristo@redhat.com> + H.J. Lu <hjl@gnu.org> + + * config/tc-mips.c (mips_arch): New. Use mips_arch instead + of mips_cpu for the ISA selection. + (md_longopts): Add OPTION_MARCH and OPTION_MTUNE. + (md_parse_option): Handle OPTION_MARCH and OPTION_MTUNE. + (mips_tune): New. Use mips_tune for scheduling and optimization + issues. + (append_insn): Use mips_tune and mips_arch. + (macro_build): Ditto. + (mips_ip): Ditto. + (md_begin): Handle mips_arch, mips_tune and mips_cpu. For + backwards compatability mips_cpu generates arch and tune. + (md_show_usage): Document new behavior. + + * doc/c-mips.texi (MIPS Opts): Document -march and -mtune. + Deprecate -mcpu. + + * NEWS: Update. + +2001-06-27 Nick Clifton <nickc@cambridge.redhat.com> + + * write.c (write_object_file): Do not set finalize_syms until + after the segments have been sized. Some backends may still + need to access the syms's frags in order to adjust relaxed + frags. + + * config/tc-arm.c (do_ldst): Use MVN to build simple inverted + constants. + +2001-06-27 Alan Modra <amodra@bigpond.net.au> + + * write.c (fixup_segment <Difference of 2 syms same seg>): Don't + subtract MD_PCREL_FROM_SECTION for 68k. + (fixup_segment <Difference of 2 syms different seg>): Only fudge + by adding MD_PCREL_FROM_SECTION for 68k or if not already pcrel. + +2001-06-27 Tracy A. Kuhrt <Tracy.Kuhrt@microchip.com> + + * write.c (fixup_segment <Difference of 2 syms same seg>): If + pcrel, subtract MD_PCREL_FROM_SECTION value. + +2001-06-24 Ben Elliston <bje@redhat.com> + + * stabs.c (generate_asm_file): Make local variable `len' a size_t. + +2001-06-24 Jakub Jelinek <jakub@redhat.com> + + * config/tc-alpha.c (tc_gen_reloc): Handle relocs against SEC_MERGE + section symbols the same way as externs. + +2001-06-24 Ben Elliston <bje@redhat.com> + + * config/tc-m88k.c (md_number_to_imm): Remove; unused since 1993. + (emit_relocations): Ditto. + (s_bss): Ditto. + (md_begin): Reformat comments to conform to the GNU standards. + (md_assemble): Ditto. + + * config/tc-m88k.c (get_reg): Adjust type of `reg_prefix' to char. + (md_parse_option): Mark parameters as unused. + (md_show_usage): Ditto. + (calcop): Adjust type of `reg_prefix' to char. + (get_reg): Ditto. + (getval): Adjust type of local `c' to char. + (md_create_short_jump): Mark from_addr, to_addr params as unused. + (md_create_long_jump): Ditto. + (md_estimate_size_before_relax): Mark parameters as unused. + + * config/tc-m88k.c (md_pseudo_table): Properly terminate the table + to allay a possible compiler warning. + +2001-06-22 Nick Clifton <nickc@cambridge.redhat.com> + + * doc/internals.texi (CPU backend): Document md_atof. + +2001-06-22 Matthew Wilcox <willy@ldl.fc.hp.com> + + * config/tc-hppa.c (pre_defined_registers): Add %mrp (millicode + return pointer) alias for %r2 or %r31, depending on 32 or 64 bit + architecture. + +2001-06-21 Philip Blundell <philb@gnu.org> + + * config/tc-arm.c (cplong_flag): Rename to long_flag. All uses + updated. + (insns): Remove entry for adrl. Add long_flag for adr. + (do_adr): Handle `l' suffix. + (do_adrl): Delete. + +2001-06-21 Alan Modra <amodra@bigpond.net.au> + + * config/tc-hppa.c (CHECK_FIELD_WHERE): Define. + (md_apply_fix): Use it here. Replace printf with equivalent + as_bad_where. + (tc_gen_reloc): Use as_bad_where instead of as_bad. + (md_apply_fix): Here too. + * config/tc-i386.c (tc_gen_reloc): Use as_bad_where instead of as_bad. + * config/tc-m68k.c (tc_gen_reloc): Likewise. + (md_convert_frag_1): Likewise. + +2000-06-20 Tom Rix <trix@redhat.com> + + * config/tc-ppc.c (ppc_comm): Change default alignment to 4 bytes. + +2001-06-18 H.J. Lu <hjl@gnu.org> + + * doc/Makefile.am (info): Depend on $(MANS). + (as.1): Remove the prefix `$(srcdir)/'. + * doc/Makefile.in: Regenerated. + + * as.1: Removed. + +2001-06-18 Philip Blundell <philb@gnu.org> + + * config/tc-arm.c (do_msr): Remove restriction on usage of + immediate operands. + +2001-06-19 Alan Modra <amodra@bigpond.net.au> + + * dwarf2dbg.c (dwarf2_finish): Output file info even when no + line info. + +2001-06-13 Philip Blundell <philb@gnu.org> + + * config/tc-arm.c (thumb_shift): Improve wording of error message. + (do_t_arit): Likewise. + +2001-06-13 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-sh.c (md_pseudo_table): Only intercept the .file and + .loc pseudos if the dfwarf2 functions are available. + (md_assemble): Only call dwarf2_emit_insn if it is available. + + * expr.c: Fix typo in comment. + +2001-06-12 Nick Clifton <nickc@cambridge.redhat.com> + + * doc/as.texinfo (Infix Ops): Document that comparison and + combiner operators can be used as infix operators. + +2001-06-12 Peter Jakubek <pjak@snafu.de> + + * config/tc-m68k.c (parse_mri_control_operand): Fix handling + of AND/OR. + (swap_mri_condition): Add HS (alias fo CC) and LO (alias for CS). + (reverse_mri_condition): Likewise. + (swap_mri_condition): Issue warning for conditions that can not be + swapped. + (build_mri_control_operand): Fix order of operands (swapped). + (build_mri_control_operand): Allow upper case extension in structured + control directives. + (s_mri_else): Likewise. + (s_mri_next): Likewise. + (s_mri_for): Likewise. + (s_mri_if): Fix handling comment ('*') in mri mode. + (s_mri_while): Likewise. + * macro.c (macro_expand): Allow macro invocation with empty + extension. + +2001-06-12 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c: Fix test for overlow of literal pool. + +2001-06-11 H.J. Lu <hjl@gnu.org> + + * NEWS: Updated for the new -n option for the MIPS assembler. + + * config/tc-mips.c (md_show_usage): Add -n. + + * doc/as.texinfo: Document the new -n option. + * doc/c-mips.texi: Likewise. + * doc/as.1: Regenerated. + +2001-06-10 Alan Modra <amodra@bigpond.net.au> + + * config/obj-coff.c (obj_coff_section): Formatting fix. + + * config/tc-i386.c (md_assemble): Accept branch hints as ",pt" and + ",pn". + +2001-06-08 H.J. Lu <hjl@gnu.org> + + * config/tc-mips.c (warn_nops): New variable. Set to 0 to + disable warning about all NOPS that the assembler generates. + (macro): Warn NOPS generated only if warn_nops is not 0. + (md_shortopts): Add `n'. + (md_parse_option): Set warn_nops to 1 for `n'. + +2001-06-08 H.J. Lu <hjl@gnu.org> + + * config/tc-mips.c (mips_ip): Properly handle illegal operands. + +2001-06-08 H.J. Lu <hjl@gnu.org> + + * config/tc-mips.c (md_apply_fix): Don't adjust common + extern/weak symbols for ELF. + (md_estimate_size_before_relax): Treat weak like extern for + ELF. + (mips_fix_adjustable): Don't adjust extern/weak symbols for + ELF. + +2001-06-08 Alan Modra <amodra@bigpond.net.au> + + * Makefile.am: 'som' is not wrongly spelled 'some'. + * Makefile.in: Regenerate. + + * config/tc-mips.c (mips16_mark_labels): Reduce number of calls to + S_GET_VALUE by using a temp. + (append_insn): Likewise, and for S_SET_VALUE too. + (mips_emit_delays): Likewise. + (my_getExpression): Likewise. + (md_apply_fix): Likewise. Use "valueT" rather than "long" for "value". + (mips16_extended_frag): Remove code concerned with avoiding + locking in a frag address now that symbols are not finalized until + relaxation is complete. Cater for first relaxation pass having + bogus addresses. Use relax_marker to reliably determine whether a + symbol frag has been reached on the current pass. + +2001-06-07 H.J. Lu <hjl@gnu.org> + + * configure.in: Move "mips-*-linux-gnu*" before "mips-*-gnu*". + * configure: Regenerate. + +2001-06-07 H.J. Lu <hjl@gnu.org> + + * configure.in: Use MIPS_STABS_ELF for Linux/mips and remove + ecoff emulation. + * configure: Regenerate. + +2001-06-07 H.J. Lu <hjl@gnu.org> + + * config/tc-mips.c (mips_pseudo_table): Add "extern" if + MIPS_STABS_ELF is defined. + +2001-06-06 Nick Clifton <nickc@cambridge.redhat.com> + + * as.c (show_usage): Remove L from listing options. It is not a + generic option. + +2001-06-06 Christian Groessler <cpg@aladdin.de> + + * config/tc-z8k.c: Removed many warnings by removing unused + variables and tagging unused parameters as such. + (md_begin): Fixed a typo (","instead of ";"). + (struct ctrl_table): Add parentheses to initialize array + correctly. + (struct flag_table): Likewise. + (struct intr_table): Likewise. + (struct table): Likewise. + (check_operand): "#if 0"'ed since it doesn't seem to be used. + +2001-06-06 Peter Jakubek <pjak@snafu.de> + + * config/tc-m68k.c (md_show_usage): Add all supported ColdFire + options to list (e.g. m5206e, m5307, m5407). + +2001-06-06 Martin Schwidefsky <schwidefsky@de.ibm.com> + + * config/tc-s390.h (TC_FORCE_RELOCATION): Always emit relocations + BFD_RELOC_VTABLE_INHERIT and BFD_RELOC_VTABLE_ENTRY. + +2001-06-06 Alan Modra <amodra@bigpond.net.au> + + * config/tc-i386.c (md_assemble): Handle Pentium4 branch hints. + <JumpByte, JumpDword insn output>: Remove dead code. + +2001-06-06 Tracy Kuhrt <Tracy.Kuhrt@microchip.com> + + * as.c (parse_args): Correct option name "listing-lhs-width2". + +2001-06-05 Nick Clifton <nickc@cambridge.redhat.com> + + * symbols.c (S_SET_EXTERNAL): Do not override a section symbol's + status. + +2001-05-30 Richard Henderson <rth@redhat.com> + + * read.c (emit_leb128_expr): Call md_cons_align. + +2001-05-28 Jeff Sturm <jsturm@one-point.com> + + * config/tc-sparc.c (md_apply_fix3): Handle BFD_RELOC_SPARC_UA16, + BFD_RELOC_SPARC_UA32 and BFD_RELOC_SPARC_UA64. + (tc_gen_reloc): Likewise. + (sparc_cons_align): Don't clear sparc_no_align_cons. + (cons_fix_new_sparc): Substitute BFD_RELOC_SPARC_UA{16|32|64} for + BFD_RELOC_{16|32|64} iff sparc_no_align_cons is set. + +2001-05-27 Alan Modra <amodra@one.net.au> + + * write.c (relax_segment <rs_space>): Check the section of a + symbol to determine whether it is absolute rather than comparing + its frag against zero_address_frag as listings play tricks with + frags. + + * config/tc-m68k.c (md_assemble): Ensure variable part of frag is + allocated in the same chunk as the fixed part. + +2001-05-26 Alan Modra <amodra@one.net.au> + + * write.c (relax_segment <rs_space>): Calculate growth using + addresses before stretch. Prevent repeated error messages. + From Peter Jakubek <pjak@snafu.de> + Use as_bad_where and as_warn_where to pinpoint errors. + +2001-05-25 Alan Modra <amodra@one.net.au> + + * symbols.c (resolve_symbol_value): Always set segment, even when + not finalizing symbol value. + + * config/obj-ieee.c (write_object_file): Set finalize_syms. + * config/obj-coff.c (write_object_file): Likewise. + * (size_section): Remove rs_space assert as fr_symbol is no longer + removed. + (fill_section): Likewise. + + * configure.in: Replace linuxoldld with linux*oldld. + * configure: Regenerate. + + From 2.11 branch 2001-03-30 Richard Henderson <rth@redhat.com> + * config/tc-i386.c (md_convert_frag): Don't die on local symbols + that have been finalized. + + * symbols.c (resolve_symbol_value): Clear sy_resolving before + taking exit_dont_set_value. + + * write.c (relax_segment <rs_space>): Don't zap fr_symbol when + relaxing. + +2000-05-24 Tom Rix <trix@redhat.com> + + * config/obj-coff.c (add_lineno): xcoff allows negative line + numbers + * config/tc-ppc.c (ppc_stabx): fix generated symbol + +2001-05-24 Alan Modra <amodra@one.net.au> + + * write.c (write_object_file): Set finalize_syms = 1 before + size_seg is called. + +2001-05-23 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add ISA_MIPS64 as 64 bit + architecture, remove erraneous ISA_MIPS32. + (md_show_usage): Add MIPS r12k support. + (mips_cpu_info_table): Add MIPS r12k support. + +2001-05-22 Alan Modra <amodra@one.net.au> + + * config/tc-arc.c (md_assemble): Use is_end_of_line instead of + testing for NULs. + + * symbols.c (resolve_symbol_value): Remove "finalize" param, + instead use finalize_syms directly. Don't treat expressions + specially with regard to finalize_syms. Update calls to self. + (resolve_local_symbol): Update call to resolve_symbol_value. + (S_GET_VALUE): Likewise. Return resolve_symbol_value if + !finalize_syms. + * symbols.h (resolve_symbol_value): Update prototype. + * config/obj-aout.c (obj_crawl_symbol_chain): Update call + to resolve_symbol_value. + * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. + * config/obj-coff.c (do_relocs_for): Likewise. + (yank_symbols): Likewise. + (fixup_segment): Likewise. + * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. + * config/tc-mips.c (md_convert_frag): Likewise. + * config/tc-ppc.c (ppc_frob_symbol): Likewise. + (ppc_fix_adjustable): Likewise. + * dwarf2dbg.c (dwarf2dbg_estimate_size_before_relax): Likewise. + (dwarf2dbg_convert_frag): Likewise. + * ehopt.c (eh_frame_estimate_size_before_relax): Likewise. + (eh_frame_convert_frag): Likewise. + * expr.c (make_expr_symbol): Likewise. + * write.c (adjust_reloc_syms): Likewise. + (write_object_file): Likewise. + (relax_segment): Likewise. + (fixup_segment): Likewise. + (finalize_syms): Init to zero, and update comment. + (write_object_file): Set finalize_syms to 1 rather than 2. + * doc/internals.texi (sy_value): Mention finalize_syms. + (S_GET_VALUE): Remove restriction on when S_GET_VALUE can be called. + + * config/tc-m68k.c (relaxable_symbol): Only treat external symbols + as relaxable if embedded system, make weak syms non-relaxable. + Move definition.. + (tc_m68k_fix_adjustable): ..so it can be used here. + (md_apply_fix_2): Sign extend without conditional. + + * config/tc-v850.c: Update copyright. + +2001-05-16 Jeff Johnston <jjohnstn@redhat.com> + + * cgen.c (gas_cgen_tc_gen_reloc): Changed error message when + howto entry is not found. + +2001-05-15 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-mn10300.c (mn10300_force_relocation): Don't + optimize differences between symbols in code sections to + constants. + (mn10300_fix_adjustable): Don't adjust to section+offset + relocations pointing at symbols in code sections. + +2001-05-16 Alan Modra <amodra@one.net.au> + + * config/tc-arc.c (md_assemble): Correct dwarf2_emit_insn param + for 8 byte insns. + * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn before + opcodes are output rather than after. Delete insn_size. + * config/tc-v850.c (md_assemble): Similarly, but delete + total_insn_size. + +2001-05-14 Richard Henderson <rth@redhat.com> + + * ehopt.c (eh_frame_convert_frag): Fix missed subtype adjustment + last change. + +2001-05-14 Richard Henderson <rth@redhat.com> + + * ehopt.c (get_cie_info): Rename from eh_frame_code_alignment; + also collect whether to expect an FDE augmentation. + (check_eh_frame): Rewrite as a state machine. Track where in + an FDE we are located, skip any augmentation. + (eh_frame_estimate_size_before_relax): Get code alignment from + the fragment subtype. + (eh_frame_relax_frag, eh_frame_convert_frag): Likewise. + * read.c (emit_leb128_expr): Call check_eh_frame. + +2001-05-14 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-mn10300.c (md_assemble): Anchor dwarf2 line info + before a relaxable insns. + +2001-05-13 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-mn10300.c (tc_gen_reloc): Don't reject differences + between symbols if the base symbol is in the current section; + emit a PC-relative relocation instead. + +2001-05-12 Peter Targett <peter.targett@arccores.com> + + * config/tc-arc.c: Update copyright and tidy source comments. + (md_pseudo_table): Add directive .cpu back as an alias for + .option. Add .file and .line for dwarf2 support. + (arc_mach_type): Make bfd_mach_arc_6 default. + (md_longopts): Add entry 'pre-v6' representing old command line + option when assembling for 'arc5' core versions. + (md_parse_option): Make OPTION_ARC same as OPTION_ARC6, for new + default behaviour. + (arc_code_symbol): Make symbol value for @h30 fixup expression + equal to O_constant. + (md_assemble): Call dwarf2_emit_insn. + Include "dwarf2dbg2.h". Formatting fixes throughout file. + * config/tc-arc.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. + * doc/c-arc.texi (ARC_CORE_DEFAULT): Update to new default. + +2001-05-11 Jakub Jelinek <jakub@redhat.com> + + * config/tc-ia64.c (special_linkonce_name): New. + (make_unw_section): Map .gnu.linkonce.t.FOO text section into + .gnu.linkonce.ia64unw{,i}.FOO. + (ia64_elf_section_type): Handle .gnu.linkonce.ia64unw{,i}.FOO. + (dot_endp): Add comment about it. + +2001-05-11 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c (arm_handle_align): When truncating an aligned + block, ensure that the low order bits of the alignment are + preserved. + +2001-05-10 Alan Modra <amodra@one.net.au> + + * config/obj-vms.c (obj_crawl_symbol_chain): Don't take address of + symbol_next. + + * config/tc-fr30.c (md_estimate_size_before_relax): Return size of + current variable part of frag. + * config/tc-m32r.c (md_estimate_size_before_relax): Likewise. + * config/tc-openrisc.c (md_estimate_size_before_relax): Likewise. + * config/tc-m68hc11.c (RELAX_STATE): Define. + (RELAX_LENGTH): Define. + (md_estimate_size_before_relax): Handle non-relaxable cases + separately from relaxable cases for clarity, and return correct + size for multi-pass relaxation. + * config/tc-tahoe.c (RELAX_LENGTH): Correct. + (md_estimate_size_before_relax): As for tc-m68hc11.c. + (md_convert_frag): Remove "length_code". + * config/tc-vax.c (RELAX_STATE): Define. + (RELAX_LENGTH): Define. + (md_relax_table): Add missing entry. + (md_estimate_size_before_relax): As for tc-m68hc11.c. + (md_convert_frag): Remove "length_code". + * config/tc-ns32k.c (md_estimate_size_before_relax): Simplify and + don't bother setting fr_var. Return correct size for multi-pass + relaxation. + * config/tc-v850.c (md_estimate_size_before_relax): Rewrite. + (md_convert_frag): Don't bother clearing fr_var. + (md_pseudo_table): Correct initialization. + * config/tc-h8500.c (md_convert_frag): Don't bother clearing fr_var. + (md_estimate_size_before_relax): No need to set fr_var. + * config/tc-mcore.c (md_convert_frag): Don't bother clearing fr_var. + (md_estimate_size_before_relax): No need to set fr_var. + +2001-05-09 Richard Henderson <rth@redhat.com> + + * config/tc-ia64.c (generate_unwind_image): Align the fragment + beginning a function's unwind info block. + +2001-05-09 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-mn10300.c (md_apply_fix3): Accept PC-relative relocs. + +2001-05-08 Andreas Schwab <schwab@suse.de> + + * config/tc-m68k.c: Instead of replacing -1 by 64 in assignment to + fx_pcrel_adjust explicitly sign extend when reading it. + +2001-05-08 Alan Modra <amodra@one.net.au> + + * config/tc-m68k.c (md_estimate_size_before_relax): Set fr_var + from md_relax_table, and combine some switch cases. + +2001-05-06 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-mn10300.c (md_assemble): Subtract operand->shift + from offset in non-pcrel operands too. + +2001-05-06 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. + * config/tc-arm.c (arm_handle_align): Do not insert more than + MAX_MEM_FOR_RS_ALIGN_CODE bytes. + (arm_frag_align_code): Use MAX_MEM_FOR_RS_ALIGN_CODE. + +2001-05-03 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de> + + * Makefile.am (TARG_ENV_HFILES): Add te-hppa64.h and te-hppalinux64.h. + Run "make dep-am". + * Makefile.in: Regenerate. + * configure.in: Remove duplicate mips-*-ecoff* entry. + * configure: Regenerate. + + * config/obj-ecoff.c (obj_pseudo_table): Fix terminating entry. + (n_names): Cast away type mismatch. + (ecoff_sec_sym_ok_for_reloc): Add unused attribute. + (obj_ecoff_frob_symbol): Likewise. + * ecoff.c: (add_file): Add unused attribute. + (ecoff_directive_begin): Likewise. + (ecoff_directive_bend): Likewise. + (ecoff_directive_def): Likewise. + (ecoff_directive_dim): Likewise. + (ecoff_directive_scl): Likewise. + (ecoff_directive_size): Likewise. + (ecoff_directive_type): Likewise. + (ecoff_directive_tag): Likewise. + (ecoff_directive_val): Likewise. + (ecoff_directive_endef): Likewise. + (ecoff_directive_end): Likewise. + (ecoff_directive_ent): Likewise. + (ecoff_directive_extern): Likewise. + (ecoff_directive_file): Likewise. + (ecoff_directive_fmask): Likewise. + (ecoff_directive_frame): Likewise. + (ecoff_directive_mask): Likewise. + (ecoff_directive_loc): Likewise. + (mark_stabs): Likewise. + (ecoff_stab): Likewise. + (ecoff_frob_symbol): Cast away type mismatch. + (ecoff_padding_adjust): Likewise. + (ecoff_build_symbols): Likewise. + (ecoff_build_procs): Likewise. + (ecoff_build_aux): Likewise. + (ecoff_build_strings): Likewise. + (ecoff_build_fdr): Likewise. + (ecoff_build_debug): Likewise. + * itbl-ops.c (itbl_assemble): Variable initialization. + +2001-05-03 Alan Modra <amodra@one.net.au> + + * config/tc-i386.c (i386_displacement): Call as_bad for bad GOTOFF + expressions rather than triggering an assert. + +2001-05-02 Johan Rydberg <jrydberg@opencores.org> + + * config/tc-openrisc.c: New file. + * config/tc-openrisc.h: Likewise. + + * Makefile.am: Add OpenRISC target. + * Makefile.in: Regenerated. + + * configure.in (openrisc-*-*): Add target. + * configure: Regenerated. + +2001-05-02 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c (arm_frag_align_code): Change error message to + more explanatory version. + +2001-04-29 Keith M Wesolowski <wesolows@foobazco.org> + + * config/tc-mips.c (md_parse_option): Also accept + elf64-tradbigmips and elf64-tradlittlemips for OPTION_64. + +2001-04-27 David Mosberger <davidm@hpl.hp.com> + + * config/tc-ia64.c (dot_spillmem_p): Fix output_spill_?sprel_p() + argument passing order: predicate goes last, not first. + +2001-04-27 Sean McNeil <sean@mcneil.com> + + * configure.in: Add arm-vxworks. + * configure: Regenerate. + +2001-04-26 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c (arm_handle_align): New Function: Generate + no-op filled alignment frags. + (arm_frag_align_code): New Function: Create a code alignment frag. + (arm_init_frag): New Function: Initialse the target dependent + parts of a frag. + + * config/tc-arm.h (TC_FRAG_TYPE): Define. + (TC_FRAG_INIT): Define. + (HANDLE_ALIGN): Define. + (md_do_align): Define. + +2001-04-25 Nick Clifton <nickc@cambridge.redhat.com> + + * config/obj-coff.c (do_linenos_for): Check to see if the filename + symbol has been initialised before extracting its symbol index. + +2001-04-24 H.J. Lu <hjl@gnu.org> + + * configure: Regenerated with the right version of autoconf. + +2001-04-24 Christian Groessler <cpg@aladdin.de> + + * config/tc-z8k.c (build_bytes): 12 and 16 bit displacements now + generate R_CALLR and R_REL16 relocations + +2000-04-20 Jason Eckhardt <jle@redhat.com> + + * config/tc-d10v.h (tc_frob_label): Update the symbol's frag + since frag_now can change after d10v_cleanup is called. + +2001-04-16 David O'Brien <obrien@FreeBSD.org> + + * configure.in: Add the em type for FreeBSD targets. + * configure: Regenerate. + +2001-04-14 Alexandre Oliva <aoliva@redhat.com> + + * struc-symbol.h (struct local_symbol): New TC_LOCAL_SYMFIELD_TYPE. + * symbols.c (local_symbol_convert): Call TC_LOCAL_SYMFIELD_CONVERT. + + * config/tc-mn10300.c (md_assemble): Simplify offset adjustment of + pc-relative relocations not placed at the end of the instruction. + +2001-04-13 Jim Wilson <wilson@redhat.com> + + * tc-ia64.c (is_conditional_branch): Return true for br, brl, and br. + excluding br.i. + +2001-04-13 Jakub Jelinek <jakub@redhat.com> + + * config/obj-elf.c (obj_elf_change_section): Add entsize argument, + handle SHF_MERGE and SHF_STRINGS. + (obj_elf_parse_section_letters): Set SHF_MERGE and SHF_STRINGS. + (obj_elf_section): Allow additional argument specifying entity size. + * write.c (adjust_reloc_syms): Keep relocations against local symbols + in SEC_MERGE sections. + +2001-04-12 Jason Merrill <jason_merrill@redhat.com> + + * dwarf2dbg.c (process_entries): Don't optimize redundant line notes. + +2001-04-12 Alexandre Oliva <aoliva@redhat.com> + + * expr.c (operand): Pass &c to md_parse_name(). + * config/tc-ia64.h, config/tc-ppc.h, config/tc-tic54x.h: Adjust. + +2001-04-07 Steven J. Hill <sjhill@cotw.com> + + * config/tc-mips.c: Support ELF64 for traditional MIPS targets. + + * Makefile.am: (TARG_ENV_HFILES): Add tc-mips.h. + * Makefile.in: Regenerated. + + * configure.in: Use traditional MIPS targets for Linux/MIPS. + * configure: Regenerated. + +2001-04-06 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-mn10300.c (xr_registers): Added `pc'. + +2001-04-05 Alan Modra <alan@linuxcare.com.au> + + * configure.in: Add h8500-*-coff and h8500-*-rtems targets. + * configure: Regenerate. + + * config/tc-h8500.c (md_estimate_size_before_relax): Add missing + cases, and always return size based on current fr_subtype. + (md_begin): Move initialization of md_relax_table.. + (md_relax_table): ..to static initializer. Set rlx_length for + UNDEF_WORD_DISP cases. + * config/tc-w65.c (md_estimate_size_before_relax): Likewise. + (md_begin): Likewise. + (md_relax_table): Likewise. + * config/tc-mcore.c (md_estimate_size_before_relax): Likewise. + (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. + Set rlx_backward and rlx_forward to zero for unused states. + * config/tc-sh.c (md_estimate_size_before_relax): Likewise. + (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. + (UNCOND12, UNCOND32): Remove duplicate defines. + +2001-04-04 Hans-Peter Nilsson <hp@axis.com> + + * config/tc-cris.c (md_estimate_size_before_relax) <case + ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_UNDF)>: Don't emit + 32-bit branch, just set fragP->fr_subtype. Set fragP->fr_var. + <all cases>: Always set fragP->fr_var using md_cris_relax_table. + Add cases to cover all relax states. + (cris_insn_first_word_frag): New. + (md_assemble): Call cris_insn_first_word_frag to get the first + frag in an insn, not frag_more. Don't call dwarf2_emit_insn at + end. Drop variable insn_size. + (gen_bdap): Call cris_insn_first_word_frag, not frag_more. + (cris_sym_leading_underscore): Wrap first as_bad parameter in _(). + (cris_sym_no_leading_underscore, s_cris_file, s_cris_loc): Ditto. + + * write.c (write_object_file): Reset broken word state before + calling relax_seg. + +2001-03-31 Alan Modra <alan@linuxcare.com.au> + + * listing.c (listing_listing): Enable listing on EDICT_NOLIST_NEXT + for one line if not already enabled. + * cond.c (s_elseif): Correct conditional assembly listing. + (s_else): Likewise. + + * cond.c (s_endif): Correct handling of "if .. elseif .." trees. + Don't abort on NULL current_cframe. + +2001-03-30 Alan Modra <alan@linuxcare.com.au> + + * dwarf2dbg.c (dwarf2_directive_file): Fix warnings. + (dwarf2dbg_convert_frag): Pass `finalize_syms' to resolve_symbol_value. + * config/obj-aout.c (obj_crawl_symbol_chain): Likewise. + * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. + * config/obj-coff.c (do_relocs_for): Likewise. + (yank_symbols): Likewise. + (fixup_segment): Likewise. + * config/tc-ppc.c (ppc_frob_symbol): Likewise. + (ppc_fix_adjustable): Likewise. + * config/tc-mips.c (md_convert_frag): Likewise. + * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. + * ehopt.c (eh_frame_convert_frag): Likewise. + * expr.c (make_expr_symbol): Likewise. + + * frags.h (struct frag): Add last_fr_address. Reorder fields for + better packing. + * symbols.c (resolve_symbol_value): Don't fix expression values + until relaxation is complete. + (resolve_local_symbol): Pass `finalize_syms' to resolve_symbol_value. + (S_GET_VALUE): Likewise, and return unresolved expression value. + * write.c (finalize_syms): New. + (relax_and_size_seg): Split into.. + (relax_seg): New function, returns 1 if anything changed.. + (size_seg): And the remainder of relax_and_size_seg. + (fixup_segment): Arrange for final resolution of sym values. + (adjust_reloc_syms): Likewise. + (write_object_file): Likewise, and repeatedly call relax_seg until + nothing more changes. + (relax_segment): Return 1 if anything changed. Use correct types + for rs_org `target' and `after'. + * write.h (finalize_syms): Declare. + (relax_segment): Update prototype. + + * config/tc-sh.c (md_estimate_size_before_relax): Add extra + do-nothing cases to switch to avoid abort on a second relaxation + pass, and tidy code a little. + * config/tc-cris.c (md_estimate_size_before_relax): Likewise. + * config/tc-h8500.c (md_estimate_size_before_relax): Likewise. + * config/tc-w65.c (md_estimate_size_before_relax): Likewise. + * config/tc-i386.c (UNCOND_JUMP, COND_JUMP, COND_JUMP86): Decrement. + (md_relax_table): Remove first four unused entries. Increment + rlx_length by one throughout table, and update comments to suit. + (md_estimate_size_before_relax): Return size of current variable + part of frag to reflect reality when relaxing more than once. + * config/tc-mcore.c (COND12, UNCD12): Rename to DISP12 throughout. + (COND32, UNCD32): Rename to DISP32 throughout. + (UNDEF_WORD_DISP): Renumber to 3. + (md_estimate_size_before_relax): Add extra do-nothing cases. + * config/tc-mn10200.c (md_estimate_size_before_relax): Rewrite. + * config/tc-mn10300.c (md_estimate_size_before_relax): Rewrite. + * config/tc-ns32k.c (md_estimate_size_before_relax): Add cases to + handle word and dword branches. + +2001-03-29 Hans-Peter Nilsson <hp@axis.com> + + * config/tc-cris.h (tc_fix_adjustable): Allow only + BFD_RELOC_CRIS_32_GOTREL of the PIC relocs. + * config/tc-cris.c (cris_get_pic_suffix): Correct reloc type in + example in comment to valid type. + +2001-03-28 H.J. Lu <hjl@gnu.org> + + * read.c (equals): Set to local for COFF only if it hasn't been + defined before. + +2001-03-28 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (DEFAULT_LEVEL): Define. + (md_begin): Use it when setting default architecture. + +2001-03-27 Nick Papadonis <nick@coelacanth.com> + + * read.c (equals): (for COFF) default symbols to being local. + +2001-03-27 Hans-Peter Nilsson <hp@axis.com> + + * configure.in (cris-*-*): Change default emulation to criself. + (cris-*-*aout*): New rule. + * configure: Regenerate. + +2001-03-26 Martin Schwidefsky <schwidefsky@de.ibm.com> + + * config/tc-s390.c (tc_s390_fix_adjustable): Add test for + BFD_RELOC_390_GOTENT. + * config/tc-s390.h (TC_RELOC_RTSYM_LOC_FIXUP): Add test for + BFD_RELOC_390_GOTENT. + +2001-03-26 Nick Clifton <nickc@redhat.com> + + * config/tc-s390.h (TC_FORCE_RELOCATION): Define. + * config/tc-s390.c (s390_force_relocation): New function: Force + relocations for VTINHERIT relocs. + +2001-03-23 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * doc/as.texinfo: Put @c man begin to generate the as man page. + When generating man, define all the variables. Re-organize some + options to obtain better indentation of man page. + * doc/Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable. + (as.1): Build from as.texinfo. + * doc/Makefile.in: Regenerate.Index: binutils/Makefile.am + +2001-03-25 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (i386_scale): Accept an absolute expression for + scale factor, and return the end of the expression. + (i386_operand): Modify for above. + +2001-03-23 Nick Clifton <nickc@redhat.com> + + * doc/as.texinfo: Document --listing-XXX command line switches. + Explain why listings behave differently when -pipe is used. + +2001-03-23 Richard Sandiford <rsandifo@redhat.com> + + * write.c (fix_new_exp): Print an error if passed a register. + +2001-03-23 Hans-Peter Nilsson <hp@axis.com> + + * config/tc-cris.c: Tweak attribution. Fix typos. PIC support. + (PIC_SUFFIX_CHAR): New macro. + (cris_get_pic_suffix, cris_get_pic_reloc_size): New functions. + (pic): New variable. + (md_longopts): New option --pic. + (OPTION_PIC): Define. + (md_estimate_size_before_relax): Tweak longish comment. + (md_create_long_jump): Make the long jumps generate ADD.D offset,PC. + (md_assemble): Handle a PIC relocation on prefix and normal + instruction operands. + <output_instruction.insn_type == CRIS_INSN_BRANCH>: Handle + "complex" operand expressions. Call frag_more outside + gen_cond_branch_32 parameter list. + (cris_process_instruction): Handle PIC relocs on parsed + operand expressions. Validize PIC reloc sizes. + (get_autoinc_prefix_or_indir_op): Handle PIC suffix. + (gen_bdap): Handle "complex" operand expressions. + (gen_cond_branch_32): Use as_warn_where, not as_warn. Use + ADD.D offset,PC as jump instruction if generating PIC. Generate + error instead of crashing on complex expressions. + (cris_number_to_imm): Add segT parameter. All callers changed. + Use segT parameter, not now_seg, for segment of fixup. Handle + PCREL relocations but check that they are fully resolved. + (md_parse_option): Handle OPTION_PIC. + (tc_gen_reloc): Handle PIC relocs. + (md_show_usage): Update for --pic. + (md_apply_fix3): Renamed from md_apply_fix. + (md_pcrel_from): Accept emitting PCREL relocs when ELF. + (md_cris_force_relocation): Force relocation for PIC relocs. + + * config/tc-cris.h: Tweak attribution. + (MD_APPLY_FIX3): Define. + (IS_CRIS_PIC_RELOC): New macro. + (TC_RELOC_RTSYM_LOC_FIXUP): Define. + (tc_fix_adjustable): Don't adjust a globally visible symbol when + generating ELF. + (tc_frob_symbol): Avoid emitting undefined symbols. + +2001-03-20 Alan Modra <alan@linuxcare.com.au> + + * frags.h (struct frag): Add relax_marker. + * write.c (is_dnrange): Delete. + (relax_frag): Use correct types for `aim', `target', `address'. + Delete `offset', `was_address'. Test `relax_marker' instead of + using fragile (and slow) address test. + (relax_segment): Init and flip `relax_marker'. + +2001-03-19 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (md_assemble <REGISTER_WARNINGS>): Correct + used register name. + +2001-03-18 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (md_pseudo_table): Recognize xrefb to comply + with 'Motorola specification for assembly language input standard'. + +2001-03-17 Richard Henderson <rth@redhat.com> + + * dwarf2dbg.c (user_filenum, user_filenum_allocated): Remove. + (dwarf2_directive_loc): Don't use them. + (dwarf2_directive_file): Reject duplicate file definitions. + (get_filenum): Zero allocated memory. + (out_file_list): Complain about missing file definitions. + +2001-03-17 Alan Modra <alan@linuxcare.com.au> + + * read.c (do_org): Handle complex expressions. + * cgen.c (gas_cgen_finish_insn): Likewise. + +2001-03-15 David Mosberger <davidm@hpl.hp.com> + + * config/tc-ia64.c (md): New member keep_pending_output. + (ia64_flush_pending_output): Flush only if md.keep_pending_output + is not set. + (dot_xdata): Turn on md.keep_pending_output for the duration of + this function. + (dot_xfloat_cons): Ditto. + (dot_xstringer): Ditto. + (dot_xdata_ua): Ditto. + (dot_xfloat_cons_ua): Ditto. + +2001-03-15 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (ia64_unrecognized_line, case '['): Add local + label support. + +2001-03-15 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-sh.c (parse_reg): Match capital MACH and MACL. + +2001-03-15 DJ Delorie <dj@redhat.com> + + * stabs.c (s_stab_generic): Don't corrupt the notes obstack by + blindly freeing string if it isn't at the top of the obstack. + +2001-03-13 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (RELOC_ENUM): Define. Use throughout file. + (NUM_FLAG_CODE): Define. + (lex_got): New function. + (got_reloc): New global var. + (x86_cons_fix_new): New function. + (x86_cons): New function. + (i386_immediate): Use lex_got here, replacing inline code. Change + "ignoring junk.." error message to "junk.." + (i386_displacement): Likewise. + * config/tc-i386.h (TC_PARSE_CONS_EXPRESSION): Define. + (x86_cons): Declare. + (TC_CONS_FIX_NEW): Define. + (x86_cons_fix_new): Declare. + +2001-03-12 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (md_begin): Always set machine type based on + cpu_variant. + +2001-03-07 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (struct _i386_insn): Rename disp_reloc to reloc. + (md_assemble) <smallest displacement>: Use correct field of i.op[] + union. + <JumpInterSegment output>: Use correct i.disp_reloc[]. + <immediate output>: Likewise. + +2001-03-06 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (md_apply_fix3): Clear bit zero of offset in + BLX(1) instruction. + +2001-03-06 Igor Shevlyakov <igor@windriver.com> + + * config/tc-m68k.c : Add 5407 to archs[] table. + (HAVE_LONG_BRANCH): Add mcf5407. + (select_control_regs): Recognize 5407. + +2001-03-02 Dave Brolley <brolley@redhat.com> + + * config/tc-m32r.c (expand_debug_syms): Call frag_align_code rather + than m32r_do_align. + +2001-03-02 Richard Sandiford <rsandifo@redhat.com> + + * config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): New macro. + (gen_to_words): Print warnings if NaNs are found and the target CPU + does not support them. Allow largest exponent to be used in normal + numbers if TC_LARGEST_EXPONENT_IS_NORMAL evaluates to true. + +2001-02-28 Andreas Jaeger <aj@suse.de>, Bo Thorsen <bo@suse.de> + + * config/tc-i386.c (tc_gen_reloc): Remove ugly hack which is not needed + anymore since we use bfd_elf_generic_reloc now. + (md_apply_fix3): Only apply hack for partial_inplace if not using RELA. + +2001-02-27 Alan Modra <alan@linuxcare.com.au> + + * configure.in (BFD_VERSION): New. + (AM_INIT_AUTOMAKE): Use $BFD_VERSION. + * configure: Regenerate. + * Makefile.am: Run "make dep-am" + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + +2001-02-26 Mark Elbrecht <snowball3@bigfoot.com> + + * config/obj-coff.c [BFD_ASSEMBLER] (obj_coff_section): Set + SEC_NEVER_LOAD when the 'n' flag is used. + Add SEC_NEVER_LOAD to matchflags. + +2001-02-24 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * symbols.c (decode_local_label_name): Initialize message_format + only when an error is reported (perf pb due to I18N). + +2001-02-23 H.J. Lu <hjl@gnu.org> + + * dwarf2dbg.c (dwarf2_directive_file): Call s_app_file (0) if + BFD_ASSEMBLER is not defined. + +2001-02-23 Richard Sandiford <rsandifo@redhat.com> + + * config/tc-mn10300.c (md_apply_fix3): Don't mark a fixup as + done if it's against a symbol. + +2001-02-22 Timothy Wall <twall@cygnus.com> + + * config/tc-ia64.c (ia64_target_format): Return ia64-aix-specific + target formats if applicable. + * config/te-ia64aix.h: New. Configuration for AIX5 on IA-64. + * Makefile.am (TARG_ENV_HFILES): Added config/te-ia64aix.h. + * Makefile.in: Regenerated. + * configure.in: Added configuration for ia64-*-aix*. + * configure: Regenerated. + +2001-02-21 David Mosberger <davidm@hpl.hp.com> + + * config/tc-ia64.c (enum operand_match_result): New type. + (operand_match): Change return type to operand_match_result. + Fix all returns appropriately, adding support for returning the + out-of-range result. + (parse_operands): New locals result, error_pos, out_of_range_pos, + curr_out_of_range_pos. Rewrite operand matching loop to give better + error messages. + +2001-02-21 David Mosberger <davidm@hpl.hp.com> + + * config/tc-ia64.c (struct unwind): Add member "prologue_count". + (dot_proc): Clear unwind.prologue_count to zero. + (dot_prologue): Increment unwind.prologue_count. + (dot_restore): If second operand is omitted, use + unwind.prologue_count -1 for "ecount" (# of additional regions to + pop). Decrement unwind.prologue_count by number of regions + popped. + +2001-02-21 Nick Clifton <nickc@redhat.com> + + * doc/as.texinfo (Section): Note that some flags to the COFF + version of .section remove attributes rather than setting them. + +2001-02-20 Kazu Hirata <kazu@hxi.com> + + * config/tc-pdp11.c: Fix formatting. + * config/tc-pdp11.h: Likewise. + +2001-02-20 Bo Thorsen <bo@suse.de> + + * config/tc-i386.c (tc_i386_fix_adjustable): Fix GOTPCREL GOT + entry. + +2001-02-18 David O'Brien <obrien@FreeBSD.org> + + * configure.in (cpu_type, arch): Add a generic FreeBSD specification as + all FreeBSD platforms should look the same at this level. + * configure: Rebuilt. + * config/tc-i386.c: Add support for old FreeBSD a.out hosts. + +2001-02-18 lars brinkhoff <lars@nocrew.org> + + * Makefile.am: Add PDP-11 target. + * configure.in: Likewise. + * config/tc-pdp11.c: New file. + * config/tc-pdp11.h: New file. + * doc/Makefile.am: Add PDP-11 documentation. + * doc/all.texi: Likewise. + * doc/as.texinfo: Likewise. + * doc/c-pdp11.texi: New file. + +2001-02-16 matthew green <mrg@redhat.com> + + * cgen.c (gas_cgen_md_apply_fix3): Support BFD_RELOC_64. + +2001-02-13 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (operand_match, case TAG13): Make a BFD_RELOC_UNUSED + reloc instead of a 0 reloc. + (md_apply_fix3): Check for BFD_RELOC_UNUSED instead of 0, and mark it + as done. + * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Likewise. + +2001-02-13 Ian Lance Taylor <ian@zembu.com> + + * write.c (is_dnrange): Stop as soon as the address becomes + larger. + (relax_frag): Add segment parameter. Only call symbol_get_frag + once. Only call is_dnrange if the symbol is in the same segment, + and the symbol address is larger. + (relax_segment): Pass segment to md_relax_frag and relax_frag. + * write.h (relax_frag): Update declaration. + * config/tc-fr30.c (fr30_relax_frag): Add segment parameter. Pass + it to relax_frag. + * config/tc-m32r.c (m32r_relax_frag): Likewise. + * config/tc-m32r.h (md_relax_frag): Add segment parameter. + (m32r_relax_frag): Update declaration. + * config/tc-mips.h (md_relax_frag): Add segment parameter. + * config/tc-tic54x.h (md_relax_frag): Likewise. + * doc/internals.texi (CPU backend): Update documentation for + md_relax_frag. + +2001-02-13 Alan Modra <alan@linuxcare.com.au> + + * doc/c-i386.texi (i386-Arch): Add "jumps"/"nojumps" blurb. + Mention effect of < 386 architectures on jump promotion. + (i386-Jumps): xref above. Don't assume long disp is 32 bits. + + * config/tc-i386.c (no_cond_jump_promotion): New. + (set_cpu_arch): Parse "jumps" arch modifier. + (insn_size): Modify usage comment. + (ENCODE_RELAX_STATE): Reformat and protect macro arg. + (SIZE_FROM_RELAX_STATE): Rename to DISP_SIZE_FROM_RELAX_STATE. + (TYPE_FROM_RELAX_STATE): New define. + (UNCOND_JUMP, COND_JUMP): Renumber. + (md_relax_table): Reorder to suit. + (COND_JUMP86): New define. + (md_relax_table): Handle COND_JUMP86 cases. Add a few comments. + (md_assemble): Create frag var for jumps of max size, encode relax + state for COND_JUMP86. + (md_estimate_size_before_relax): Handle COND_JUMP86 cases, and + leave conditional jumps small if no_cond_jump_promotion. + (md_convert_frag): Likewise. + + * expr.c (operator): Don't bump input_line_pointer for two char + operators. Instead return operator size via new param num_chars. + (expr): Use above to parse multi-char operators correctly. + +2001-02-12 Jan Hubicka <jh@suse.cz> + + * config/tc-i386.c (i386_displacement): Fix handling of + BFD_RELOC_X86_64_GOTPCREL. + (i386_validate_fix): Likewise. + +2001-02-12 Philip Blundell <pb@futuretv.com> + + * config/tc-arm.c (do_ldst): Improve warnings for unpredictable + ldrt/strt instructions. + +2001-02-11 Maciej W. Rozycki <macro@ds2.pg.gda.pl> + + * config/tc-mips.c (macro): For M_LA_AB emit a + BFD_RELOC_MIPS_CALL16 relocation or a + BFD_RELOC_MIPS_CALL_HI16/BFD_RELOC_MIPS_CALL_LO16 pair instead of + BFD_RELOC_MIPS_GOT16 and + BFD_RELOC_MIPS_GOT_HI16/BFD_RELOC_MIPS_GOT_LO16, respectively for + loading the jump register when generating SVR4_PIC code. + +2001-02-10 Chris Demetriou <cgd@broadcom.com> + + * configure.in: Make 'mipself' and 'mipsecoff' emulations + map to MIPS-specific files, as they used to do before the + change on 2000-05-21. + * configure: Regerate. + +2001-02-10 Chris Demetriou <cgd@broadcom.com> + + * config/tc-mips.c (md_parse_option): Don't try to compile + ELF-only option code if not ELF. + +2001-02-08 David Mosberger <davidm@hpl.hp.com> + + * config/tc-ia64.h (md_elf_section_type): New macro. + (ELF_TC_SPECIAL_SECTIONS): Drop .IA_64.unwind and .IA_64.unwind_info + (they're now handled via ia64_elf_section_type. + + * config/tc-ia64.c (unwind): New members saved_text_seg, + saved_text_subseg, and force_unwind_entry. + (optimize_unw_records): New function to optimize away unnecessary + unwind directives. + (ia64_elf_section_type): New function. + (output_unw_records): Generate unwind info only if the size is + non-zero or if it's forced for some other reason (e.g., + handlerdata or a personality routine). + (generate_unwind_image): Don't switch back to previous + section---stay inside the unwind info section instead so that + handlerdata that may follow goes into the right place. + (dot_handlerdata): Force generation of unwind entry and save the + current active text segment before generating unwind image. + (dot_unwentry): Force generation of unwind entry. + (dot_personality): Ditto. + (dot_endp): Generate unwind table entry only if there is + some unwind info or the unwind entry was forced. + + * config/tc-ia64.c (make_unw_section_name): New macro to form + unwind section name. + (generate_unwind_image): Add "text_name" argument. Use it to + form unwind section name. + (dot_handlerdata): Determine current segment (section) name and + pass it to generate_unwind_image(). + (dot_endp): Determine current segment (section) name and use + it to determine the appropriate unwind section name. + (ia64_md_do_align): Add missing ATTRIBUTE_UNUSED declarations to + n, fill, and max arguments. + +2001-02-09 Schwidefsky <schwidefsky@de.ibm.com> + + * Makefile.am: Add linux target for S/390. + * configure.in: Likewise. + * config/tc-s390.c: New file. + * config/tc-s390.h: New file. + +2001-02-09 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-sh.c (md_pseudo_table): Add uaquad. Use s_uacons for + 2byte, 4byte and 8byte. + +2001-02-08 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (pa_build_unwind_subspace): Don't call + md_number_to_chars with size > sizeof (valueT). + +2001-02-06 H.J. Lu <hjl@gnu.org> + + * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Do fixup if + there is no relocation. + +2001-02-06 H.J. Lu <hjl@gnu.org> + + * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): New. Defined. + + * config/tc-ia64.c (md_parse_option): Only accept the valid + ia64 options on "-axxx". + +2001-02-05 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (errata_nop_necessary_p): Return 0 instead of + aborting for invalid operands. + +2001-02-06 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (fix_new_hppa): Pass in unwind directly rather + than via pointer. Update all callers. + (UNWIND_LOW32): Define. + (UNWIND_HIGH32): Define. + (pa_build_unwind_subspace): Use the above macros instead of dumping + bitfields directly. Call frag_more once rather than multiple times. + (md_assemble): Use UNWIND_LOW32. + (pa_entry): Likewise + (pa_procend): Likewise. + (process_exit): Use UNWIND_HIGH32. + +2001-02-04 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.h (LISTING_HEADER): Use m68hc11_listing_header + function to select the header according to the cpu. + (md_after_pass_hook, md_do_align): Remove. + (md_cleanup, m68hc11_cleanup): Remove. + (md_pcrel_from_section): Declare. + * config/tc-m68hc11.c (build_dbranch_insn): Remove insn_size. + (build_jump_insn, build_insn): Likewise. + (m68hc11_listing_header): New function. + (m68hc11_cleanup): Remove. + +2001-02-02 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (relaxable_symbol): Relax externally visible + symbols because there is no support for shared libraries and these + symbols can't be overridden (unless they are weak). + +2001-02-01 Momchil Velikov <velco@fadata.bg> + + * dwarf2dbg.c (out_debug_abbrev): Terminate the abbreviations + for the compilation unit with a zero byte. + +2001-01-30 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (pa_ip): Support 12 bit branches to absolute + destinations. Correct range check for 17 and 22 bit branches. + +2001-01-25 Nick Clifton <nickc@redhat.com> + + * config/tc-m68k.c (tc_gen_reloc): Do not abort if tcbit is + still set. Issue an error message instead. + (md_estimate_size_before_relax): Delete unused variable + 'buffer_address'. Fixup parentheses around if statement. + +2001-01-23 Kazu Hirata <kazu@hxi.com> + + * as.c: Fix formatting. + * ehopt.c: Likewise. + * messages.c: Likewise. + * stabs.c: Likewise. + * symbols.c: Likewise. + +2001-01-23 Ben Elliston <bje@redhat.com> + + * config/tc-m32r.c (m32r_handle_align): Declare type of fragp. + +2001-01-22 Kazu Hirata <kazu@hxi.com> + + * config/tc-alpha.c: Fix formatting. + +2001-01-19 Kazu Hirata <kazu@hxi.com> + + * config/tc-alpha.c: Fix formatting. + +2001-01-18 Kazu Hirata <kazu@hxi.com> + + * config/tc-alpha.c: Fix formatting. + +2001-01-18 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (ldm_flags): Remove redundant bit from "fa" and + "da" flags. + (stm_flags): Remove redundant bit from "ed" and "da" flags. + +2001-01-18 Alexandre Oliva <aoliva@redhat.com> + + * configure.in (cpu_type, arch): Match i386 too. + * configure: Rebuilt. + +2001-01-16 Kazu Hirata <kazu@hxi.com> + + * config/tc-i386.c: Fix formatting. + +2001-01-16 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (tc_gen_reloc): Use SEGREL32 instead of DIR32 + relocs for .PARISC.unwind section. + + * config/tc-hppa.c (pa_build_unwind_subspace): Build unwind + depending on section flags, not just for .text. + +2001-01-15 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (ia64_flush_insns): Handle unwind directives + not immediately followed by an instruction. + +2001-01-15 Kazu Hirata <kazu@hxi.com> + + * config/tc-m68hc11.c: Fix formatting. + +2001-01-15 Nick Clifton <nickc@redhat.com> + + * symbols.c (colon): Change 'already defined symbol' from a + fatal error to an ordinary error. There is no reason why this + error should be fatal. + + * message.c (as_fatal): Delete output file, if one has been + created. + +2001-01-14 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.h (TARGET_FORMAT): Add hppa-linux variants. + +2001-01-14 Kazu Hirata <kazu@hxi.com> + + * config/tc-alpha.c: Fix formatting. + * config/tc-arc.c: Likewise. + * config/tc-arc.h: Likewise. + * config/tc-d10v.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-i386.c: Likewise. + * config/tc-i960.c: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-tahoe.c: Likewise. + * config/tc-vax.c: Likewise. + + * config/tc-arc.c: Fix formatting. + + * config/tc-arc.c: Fix formatting. + +2001-01-14 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (pa_build_unwind_subspace): Use SEGREL32 for + both 32 and 64 bit ELF. + + * config/tc-hppa.c (pa_ip): Store `a' flag in bit zero of operand + and don't bother storing `m' for "ce" completer. Tidy handling of + 'J' and 'K' operands to suit. Handle '<' and '>' operands. + +2001-01-14 Jan Hubicka <jh@suse.cz> + + * config/tc-i386.h (TARGET_MACH): New macro. + (i386_mach): Declare. + * config/tc-i386.c (i386_mach): New function. + +2001-01-13 Philip Blundell <philb@gnu.org> + + * doc/as.texinfo: Fix spelling and cross-references. + + * doc/c-arm.texi: Fix typos. Say that `;' is a line separator + character for all systems, not just GNU/Linux. Make it explicit + that `-k' doesn't affect code generation, just ELF flags. + +2001-01-13 Jan Hubicka <jh@suse.cz> + + * config/tc-i386.c (md_assemble): Check cpu_flags even for nullary + instructions. + +2001-01-12 Frank Ch. Eigler <fche@redhat.com> + + * cgen.c (gas_cgen_finish_insn): Call dwarf2_emit_insn. + +2001-01-12 Nick Clifton <nickc@redhat.com> + + * as.c (print_args): Update copyright date to 2001. + +2001-01-12 Peter Targett <peter.targett@arccores.com> + + * doc/c-arc.texi: New file. + Some sections to be expanded. + +2001-01-12 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (md_longopts): Recognize "--64" only for ELF. + (md_parse_option): Always accept "--32". + +2001-01-11 Peter Targett <peter.targett@arccores.com> + + * as.h (TC_ARC): Ensure struc-symbol.h included. + * as.c (dwarf2dbg.h): Include to remove implicit declaration + warnings. + * struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Define. + (TARGET_SYMBOL_FIELDS) added. + + * doc/Makefile.am (CPU_DOCS): Added c-arc.texi. + * doc/c-arc.texi: New file. + Some sections to be expanded. + * doc/as.texinfo: Update command-line options. + Removed outdated text for ARC dependant features, instead include + text from above file. + + * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Define local flag. + (TARGET_SYMBOL_FIELDS): Alias to previous definition. + (targ-cpu.h) header. + * config/tc-arc.h: + * config/tc-arc.c: New updated configuration for + ARC, including selection of core variants, and extensibility of + instructions, registers etc. through directives. + + * config/tc-arc.c (arc_extinst): Minor corrections for + error messages. + (arc_common) Likewise. Make alignment argument optional for local + symbols also, with default of zero. + +2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix + STATE_INDEXED_OFFSET when the symbol is undefined (16-bit offset). + (build_indexed_byte): Don't relax indexed byte, use 16-bit offset + and fix_new_exp() instead. + (md_convert_frag): For indexed post byte use the symbol value + rather than the displacement. + (md_relax_table): Fix indexed offset relax. + +2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (md_estimate_size_before_relax):Don't + relax weak symbols. + (relaxable_symbol): New function. + +2001-01-11 Andreas Jaeger <aj@suse.de> + + * config/tc-i386.h (TC_RELOC_GLOBAL_OFFSET_TABLE): Removed, it's + not used anywhere. + +2001-01-10 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (arm_fix_adjustable): Define for OBJ_COFF. + * config/tc-arm.h (obj_fix_adjustable): Define for OBJ_COFF + +2001-01-10 Nick Clifton <nickc@redhat.com> + + * symbols.c (DOLLAR_LABEL_CHAR): New constant - the magic + character used to dollar local symbols. + (LOCAL_LABEL_CHAR): New constant - the magic character used to + local label symbols. + (dollar_label_name): Use DOLLAR_LABEL_CHAR. + (fb_label_name): Prefix local labels with LOCAL_LABEL_PREFIX, + if defined. + Use LOCAL_LABEL_CHAR. + (decode_local_label_name): Skip LOCAL_LABEL_PREFIX. + Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. + (S_IS_LOCAL): Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. + +2001-01-08 Bo Thorsen <bo@suse.de> + + * config/tc-i386.c (i386_immediate, i386_displacement): + GOTPCREL check fix. + +2001-01-07 Ian Lance Taylor <ian@zembu.com> + + * doc/c-i386.texi (i386-Arch): Remove spaces incorrectly inserted + in last change. + +2001-01-07 Philip Blundell <philb@gnu.org> + + * doc/as.texinfo (Bug Reporting): Update email address for + reports. + * README: Likewise. + +2001-01-06 Jan Hubicka <jh@suse.cz> + + * configure.in: Define DEFAULT_ARCH for i386. + * config/tc-i386.c (md_assemble): Return after the error message; + move testing for 64bit operands to proper place. + +2001-01-06 Jan Hubicka <jh@suse.cz>, Andreas Jaeger <aj@suse.de> + + * doc/as.texinfo: Document '#' as comment character for i386 and + x86_64. Add AMD x86-64 into menu of machine dependent information. + + * doc/c-i386.texi: Document x86_64 extensions. + +2001-01-05 Jan Hubicka <jh@suse.cz> + + * config/tc-i386.c (md_assemble): Handle third byte of the opcode as prefix. + +2001-01-04 Jan Hubicka <jh@suse.cz> + + * config/tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry. + * NEWS: Add note about Pentium4 support. + +2001-01-04 Jan Hubicka <jh@suse.cz> + + * config/tc-i387.c (pi, pte, pt): Update. + (type_names): Add new types. + +2001-01-03 Jan Hubicka <jh@suse.cz> + + * config/tc-i386.h (CpuK6, CpuAthlon, CpuSledgehammer, CpuMMX, Cpu3dnow, + CpuUnknown): Renumber + (CpuP4, CpuSSE2): New. + (CpuUnknownFlags): Add CpuP4 and CpuSSE2 + +2001-01-03 Philip Blundell <pb@futuretv.com> + + * config/tc-alpha.c (alpha_force_relocation): Handle vtable + relocs. + (alpha_fix_adjustable): Likewise. + (md_apply_fix): Likewise. + +2000-12-31 H.J. Lu <hjl@gnu.org> + + * listing.c (listing_message): Allocate string only if it is + used. + + * configure: Rebuild. + +2000-12-31 Hans-Peter Nilsson <hp@bitrange.com> + + * doc/internals.texi (Relaxing with a table) <after relaxation>: + Point out caveats with generating fixups for the opcode in a frag. + +2000-12-30 Jan Hubicka <jh@suse.cz> + + * configure.in: Add support for x86_64 and x86_64-*-linux-gnu* + * NEWS: Add x86_64. + +2000-12-29 H.J. Lu <hjl@gnu.org> + + * listing.c (calc_hex): Print the variable part only if the + fragment type is rs_fill. + +2000-12-29 Hans-Peter Nilsson <hp@bitrange.com> + + * doc/internals.texi (tc_conditional_pseudoop, + TC_LINKRELAX_FIXUP): Fix typos. + +2000-12-28 Richard Henderson <rth@redhat.com> + + * write.c (subsegs_finish): Fix thinko last change -- don't + "optimize" the alignment == 0 case. + +2000-12-28 Richard Henderson <rth@redhat.com> + + * as.h (rs_align_test): New. + * frags.c (NOP_OPCODE): Move default from read.c. + (MAX_MEM_FOR_RS_ALIGN_CODE): New default. + (frag_align_code): New. + * frags.h (frag_align_code): Declare. + * read.c (NOP_OPCODE): Remove. + (do_align): Use frag_align_code. + * write.c (NOP_OPCODE): Remove. + (get_recorded_alignment): New. + (cvt_frag_to_fill): Handle rs_align_test. + (relax_segment): Likewise. + (subsegs_finish): Align last subseg in section to the + section alignment. Use frag_align_code. + * write.h (get_recorded_alignment): Declare. + * config/obj-coff.c (size_section): Handle rs_align_test. + (fill_section, fixup_mdeps): Likewise. + (write_object_file): Use frag_align_code. + + * config/tc-alpha.c (alpha_align): Use frag_align_code. + (alpha_handle_align): New. + * config/tc-alpha.h (HANDLE_ALIGN): New. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + + * config/tc-i386.h (md_do_align): Use frag_align_code. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + + * config/tc-ia64.c (ia64_md_do_align): Don't do code alignment. + (ia64_handle_align): New. + * config/tc-ia64.h (HANDLE_ALIGN): New. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + + * config/tc-m32r.c (m32r_do_align): Remove. + (m32r_handle_align): New. + (fill_insn): Use frag_align_code. + * config/tc-m32r.h (md_do_align): Remove. + (HANDLE_ALIGN, MAX_MEM_FOR_RS_ALIGN_CODE): New. + * config/tc-m88k.c, config/tc-m88k.h: Similarly. + * config/tc-mips.c, config/tc-mips.h: Similarly. + + * config/tc-sh.c (sh_cons_align): Use rs_align_test. + (sh_handle_align): Likewise. Handle rs_align_code. + (sh_do_align): Remove. + * config/tc-sh.h (md_do_align): Remove. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + + * config/tc-sparc.c (sparc_cons_align): Use rs_align_test. + (sparc_handle_align): Likewise. Handle rs_align_code. + * config/tc-sparc.h (md_do_align): Remove. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + +2000-12-22 DJ Delorie <dj@redhat.com> + + * config/tc-d10v.c (md_assemble): set prev_seg and prev_subseg + when we assemble the first half of a pair. + +2000-12-22 H.J. Lu <hjl@gnu.org> + + * config/tc-i386.c (reloc): Update the macro for non-bfd + assembler. + (BFD_RELOC_X86_64_GOTPCREL): Set to 0 for non-bfd assembler. + +2000-12-22 H.J. Lu <hjl@gnu.org> + + * dwarf2dbg.c (dwarf2_finish): Remove #if BFD_ASSEMBLER. + +2000-12-20 Jan Hubicka <jh@suse.cz> + + * config/tc-i386.h (i386_target_format): Define even for ELFs. + (QWORD_MNEM_SUFFIX): New macro. + (CpuK6,CpuAthlon,CpuSledgehammer, Cpu64, CpuNo64, CpuUnknownFlags): + New macros + (CpuMMX,CpuSSE,Cpu3dnow, CpuUnknown): Renumber. + (IgnoreSize, DefaultSize, No_?Suf, FWait, IsString, regKludge, IsPrefix, + ImmExt): Renumber. + (Size64, No_qSuf, NoRex64, Rex64): New macros. + (Reg64, Imm32S, Imm64, Disp32S, Disp64): New macros. + (Imm8, Imm8S, Imm16, Imm32, Imm1, BaseIndex, Disp8, Disp16, Disp32, + InOutPortReg,ShiftCount, Control, Debug, Test, FloatReg, FloatAcc, + SReg2, SReg3, Acc, JumpAbsolute, RegMMX, RegXMM, EsSeg, InvMem): + Renumber. + (Reg, WordReg): Add Reg64. + (Imm): Add Imm32S and Imm64. + (EncImm): New. + (Disp): Add Disp64 and Disp32S. + (AnyMem): Add Disp32S. + (RegRex, RegRex64): New macros. + (rex_byte): New type. + * config/tc-i386.c (set_16bit_code_flag): Kill. + (fits_in_unsigned_long, fits_in_signed_long): New functions. + (reloc): New parameter "signed"; support x86_64. + (set_code_flag): New. + (DEFAULT_ARCH): New macro; default to "i386". + (default_arch): New static variable. + (struct _i386_insn): New fields Operand_PCrel; rex. + (flag_16bit_code): Kill; All tests replaced to "flag_code == CODE_64BIT" + (flag_code): New enum and static variable. + (use_rela_relocations): New static variable. + (flag_code_names): New static variable. + (cpu_arch_flags): Default to CpuUnknownFlags|CpuNo64. + (cpu_arch): Add "sledgehammer"; Add CPUAthlon to Athlon and CpuK6 to + K6 and Athlon. + (i386_align_code): Return plain "nop" for x86_64. + (mode_from_disp_size): Support Disp32S. + (smallest_imm_type): Support Imm32S and Imm64. + (offset_in_range): Support size of 8. + (set_cpu_arch): Do not clobber to Cpu64/CpuNo64. + (md_pseudo_table): Add "code64"; use set_code_flat. + (md_begin): Emit sane error message on hash failure. + (tc_i386_fix_adjustable): Support x86_64 relocations. + (md_assemble): Support QWORD_MNEM_SUFFIX, REX registers, + instructions supported on particular arch just partially, + output of 64bit immediates, handling of Imm32S and Disp32S type. + (i386_immedaite): Support x86_64 relocations; support 64bit constants. + (i386_displacement): Likewise. + (i386_index_check): Cleanup; support 64bit addresses. + (md_apply_fix3): Support x86_64 relocation and rela. + (md_longopts): Add "32" and "64". + (md_parse_option): Add OPTION_32 and OPTION_64. + (i386_target_format): Call even for ELFs; choose between + elf64-x86-64 and elf32-i386. + (i386_validate_fix): Refuse GOTOFF in 64bit mode. + (tc_gen_reloc): Support rela relocations and x86_64. + (intel_e09_1): Support QWORD. + +2000-12-15 Diego Novillo <dnovillo@redhat.com> + + * config/tc-i386.c (intel_e09_1): Only flag as a memory operand if + it's not an offset expression. + (intel_e10_1): Ditto. Also, if the operand is an offset expression, + keep the braces '[' and ']' in the output string. + (intel_e11): Ditto. Also remove comparison intel_parser.op_modifier + != FLAT. There is no such op_modifier. + +2000-12-14 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * dwarf2dbg.c: If we don't have <limits.h>, try including <sys/param.h> + if we have it. + +2000-12-13 Kazu Hirata <kazu@hxi.com> + + * as.h: Fix formatting. + * cgen.h: Likewise. + * dwarf2dbg.c: Likewise. + * input-scrub.c: Likewise. + * read.h: Likewise. + +2000-12-13 Mark Elbrecht <snowball3@bigfoot.com> + + * configure.in (i386-*-msdosdjgpp): Set bfd_gas to yes. + configure: Regenerate. + +2000-12-13 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * dwarf2dbg.c: #include <limits.h> only if it exists. + +2000-12-13 Rodney Brown <RodneyBrown@mynd.com> + + * config/tc-hppa.c (pa_ip): Correct CHECK_FIELD typo. + (md_apply_fix): Here too. + +2000-12-12 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.h (ia64_init): Add prototype. + +2000-12-12 H.J. Lu <hjl@gnu.org> + + * dwarf2dbg.c: Enabled only if BFD_ASSEMBLER is defined. + + * read.h (outputting_stabs_line_debug): Change it to int. + * stabs.c (outputting_stabs_line_debug): Likewise. + +2000-12-12 Geoffrey Keating <geoffk@redhat.com> + + * config/obj-bout.c (obj_crawl_symbol_chain): Don't take + the address of a function result. + +2000-12-12 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> + + * config/tc-ppc.c (md_pseudo_table): Add .file and .loc. + (md_assemble): Call dwarf2_emit_insn. + (shlib): Fix typo SHILB -> SHLIB. + (md_parse_option): Likewise. + (ppc_elf_validate_fix): Likewise: + * config/tc-ppc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. + +2000-12-12 Nick Clifton <nickc@redhat.com> + + * cgen.h: Fix formatting. + * input-scrub.c: Fix formatting. + * macro.c: Fix formatting. + * config/tc-mips.c: Fix formatting. + * doc/c-mips.texi: Fix formatting. + +2000-12-11 Jan hubicka <jh@suse.cz> + + * config/tc-i386.c (md_assemble): Refuse 's' and 'l' suffixes in the intel + mode; convert 'd' suffix to 's' or 'l'; remove all DWORD_MNEM_SUFFIX + references. + (intel_e09_1): Convert QWORD to 'l' suffix for FP operations; refuse + otherwise. + * config/tc-i386.h (DWORD_MNEM_SUFFIX): Kill. + (No_dSuf): Kill. + + * i386.h (*_Suf): Remove No_dSuf. + (d_suf, wld_Suf,sld_Suf, sldx_Suf, bwld_Suf, d_FP, sld_FP, sldx_FP) + Remove. + (i386_optab): Remove 'd' in the suffixes. + +2000-12-06 Mark Elbrecht <snowball3@bigfoot.com> + + * config/tc-i386.c (T_SHORT): Undefine before defining. + +2000-12-05 Kazu Hirata <kazu@hxi.com> + + * config/tc-mips.c: Fix formatting. + +2000-12-04 Matthew Hiller <hiller@redhat.com> + + * config/tc-d10v.c (flag_allow_gstabs_packing): New variable. + (md_longopts): New options --gstabs-packing, --no-gstabs-packing. + (md_show_usage): Ditto. + (md_parse_option): Ditto. + (d10v_cleanup): Writes pending instruction only if + ! outputting_stabs_line_debug || ! flag_allow_gstabs_packing. + Fix compile time warning messages. + + * doc/c-d10v.texi: Documents new options. + +2000-12-04 Matthew Hiller <hiller@redhat.com> + + * stabs.c (outputting_stabs_line_debug): New variable. + (stabs_generate_asm_lineno): Set outputting_stabs_line_debug at + function entry and unset at function exit. + + * read.h (outputting_stabs_line_debug): New extern declaration. + + * as.c: Include dwarf2dbg.h for definition of dwarf2_finish. + + * dwarf2dbg.c: Fix compile time warning messages. + +2000-12-03 Kazu Hirata <kazu@hxi.com> + + * config/tc-a29k.c: Fix formatting. + * config/tc-alpha.c: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-cris.c: Likewise. + * config/tc-hppa.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-i386.c: Likewise. + * config/tc-i860.c: Likewise. + * config/tc-i960.c: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-m68hc11.c: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-m88k.c: Likewise. + * config/tc-pj.c: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-tahoe.c: Likewise. + * config/tc-vax.c: Likewise. + +2000-12-01 Chris Demetriou <cgd@sibyte.com> + + * config/tc-mips.c (mips_ip): When calculating offsets, + don't accept as constant the difference between the + addresses of symbols in two different sections. + + * config/tc-mips.c (macro_build): Add new 'U' and 'J' operand + specifiers. + (validate_mips_insn): Likewise. Also, update 'B' operand + specifier to use OP_*_CODE20 constants and delete 'm' operand + specifier. + (mips_ip): Remove 'm' operand specifier, add 'U' and 'J' + operand specifiers. Change warning generated by 'B' operand + specifier to reflect its new multi-purpose usage. + + * config/tc-mips.c (mips_set_options): Use ISA_UNKNOWN rather than + -1, and update comment. + (file_mips_isa): Likewise. + (mips_cpu): Use CPU_UNKNOWN rather than -1, and update comment. + (ISA_HAS_COPROC_DELAYS, ISA_HAS_64BIT_REGS, gpr_interlocks): Use + ISA_* constants rather than hard-coded numbers. + (mips_cpu_info): New structure. + (mips_cpu_info_table): New table describing CPU and ISA names + and numbers. + (mips_cpu_info_from_name, mips_cpu_info_from_isa, + mips_cpu_info_from_cpu): New functions. + (mips_isa_to_str): New function to get string for ISA name. + (mips_cpu_to_str): Convert to use mips_cpu_info_from_cpu, and + return const char *. + (md_begin): Redo CPU and ISA selection logic, using + mips_cpu_info_from_*. Convert to use ISA_* constants rather + than hard-coded numbers. + (append_insn, mips_emit_delays, macro, macro2): Convert to use + ISA_* constants rather than hard-coded numbers. + (mips_ip): Convert to use mips_isa_to_str to get ISA name. + (md_longopts): Delete OPTION_NO_MIPS32. + (md_parse_option): Convert to use ISA_* constants rather than + hard-coded numbers. Make OPTIONS_MIPS32 case treat MIPS32 + as an ISA. Delete OPTION_NO_MIPS32 case. Convert OPTION_MCPU + to use strcasecmp to recognize "default" and to use + mips_cpu_info_from_name to get CPU numbers from argument. + (md_show_usage): Move -mips32 so it's with the rest of the ISA + flags. Change 4Kc, 4Kp and 4Km CPU entries to just be + mips32-4k. + (s_mipsset): Accept ISA value 32. + * doc/as.texinfo: Clean up MIPS options summary slightly, + remove -no-mips32. Add note about -mips4 and -mips32 + specifying those ISA levels. Delete -mips32 and -no-mips32 + cpu flag descriptions. + * doc/c-mips.texi: Add -mips32 to list of ISA switches. Clean + up the supported CPU switch list, and replace 4Kc, 4Km, and + 4Kp entries with a single mips32-4k entry. Note that you can + use ".set mips32". + + * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add checks for ISA_MIPS5 and + ISA_MIPS64. + (md_longopts, OPTION_MIPS5, OPTION_MIPS64): Add options for + -mips5 and -mips64. + (md_parse_option): Add cases for OPTION_MIPS5 and + OPTION_MIPS64. + (md_show_usage): Mention -mips5 and -mips64 arguments. + (s_mipsset): Add cases for MIPS5 and MIPS64. + (mips_cpu_info_table): Add entries for MIPS5 and MIPS64 ISAs + and pseudo-CPUs. + * doc/as.texinfo: Mention -mips5 and -mips64 options + and their meanings. + * doc/c-mips.texi: Likewise. Also update introduction + and ".set" usage information. + + * config/tc-mips.c (md_show_usage): Add "sb1" to the + CPU list. + (mips_cpu_info_table): Add SB-1 entries. + * doc/c-mips.texi: Add "sb1" to the list of CPUs + known to the -mcpu option. + + * doc/as.texinfo: Correct description of MIPS -mcpu + option, by copying some of the text from doc/c-mips.texi. + +2000-12-01 Joel Sherrill <joel@OARcorp.com> + + * configure.in (arm-*-rtems*, a29k-*rtems*, h8300-*-rtems*): + New targets. + (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets. + (sparc*-*-rtems*): Switched from a.out to ELF. + * configure: Regenerate. + * config.in: Regenerate. + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * po/gas.pot: Regenerate. + +2000-11-30 Philip Blundell <pb@futuretv.com> + + * config/obj-coff.c (obj_coff_weak): Use S_SET_WEAK if it exists, + even in non BFD_ASSEMBLER case. + +2000-11-30 Diego Novillo <dnovillo@redhat.com> + + * config/tc-i386.c (md_assemble): Swap i.disp_relocs when using intel + syntax. + +2000-11-29 Richard Henderson <rth@redhat.com> + + * dwarf2dbg.c: Rewrite from scratch. Queue all debugging output + until dwarf2_finish; use relaxation to get cross-fragment offsets; + thread multiple subsegments properly; handle multiple code + sections properly; emit proper compilation unit info for assembler + generated debugging. + + * as.h (enum _relax_state): Add rs_dwarf2dbg. + * dwarf2dbg.h (struct dwarf2_line_info): Remove filename. + (dwarf2dbg_estimate_size_before_relax): Declare. + (dwarf2dbg_relax_frag, dwarf2dbg_convert_frag): Declare. + * write.c: Include dwarf2dbg.h. + (cvt_frag_to_fill): Handle rs_dwarf2dbg. + (relax_segment): Likewise. + +2000-11-28 Hans-Peter Nilsson <hp@bitrange.com> + + * config/tc-sh.c (md_convert_frag) <undefined symbol, conditional + jump>: Use as_bad_where instead of as_bad. Tweak error message + accordingly. Stabilize frag by updating fix part and resetting + variant part. + <undefined symbol, unconditional jump>: Ditto. + (sh_elf_cons): Cast *input_line_pointer to unsigned char when + indexing is_end_of_line[]. + (md_assemble): Initialize size to 0. + (md_section_align): Mark parameter seg as unused. + (parse_reg): Parse names case-insensitively. + +2000-11-28 Kazu Hirata <kazu@hxi.com> + + * config/obj-aout.h: Fix formatting. + * config/obj-bout.h: Likewise. + * config/obj-coff.c: Likewise. + * config/obj-coff.h: Likewise. + * config/obj-elf.h: Likewise. + * config/obj-som.h: Likewise. + * config/obj-vms.c: Likewise. + * config/obj-vms.h: Likewise. + * config/tc-h8300.h: Likewise. + * config/tc-ns32k.h: Likewise. + * config/tc-sparc.h: Likewise. + * config/tc-tic54x.h: Likewise. + * config/tc-z8k.h: Likewise. + +2000-11-28 Nick Clifton <nickc@redhat.com> + + * doc/as.1 (COPYING): Mention that the GNU Free Documentation + License is present in the sources, but not the output, and + also available from the GNU website. + (GNU Free Documentation License): Comment out this section. + +2000-11-28 Hans-Peter Nilsson <hp@axis.com> + + * Makefile.am (CPU_OBJ_VALID): Add case to filter out invalid coff + targets. Remove i860 from valid a.out targets. + * Makefile.in: Regenerate. + + * config/tc-cris.c: Include dwarf2dbg.h. + (md_pseudo_table): Add .file and .loc. + (md_assemble): Call dwarf2_emit_insn if generating ELF. + (s_cris_file, s_cris_loc): New. + * config/tc-cris.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. + * Makefile.am: Regenerate dependencies. + * Makefile.in: Regenerate. + +2000-11-28 Alan Modra <alan@linuxcare.com.au> + + * expr.c (STANDARD_MUL_PRECEDENCE): Correct value. + (MRI_MUL_PRECEDENCE): Likewise. + (op_rank): Fix a comment typo. + +2000-11-26 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (build_indexed_byte): Print the offset in + the error message. + (get_operand): Fix analysis for movw/movb instructions. + +2000-11-24 Nick Clifton <nickc@redhat.com> + + * configure.in (xscale-elf): Add target. + (xscale-coff): Add target. + * configure: Regenerate. + + * config/tc-arm.c (ARM_EXT_V5E): New ARM architecture + extenstion. + (ARM_EXT_XSCALE): New ARM architecture extension. + (ARM_LONGMUL): Rename to ARM_EXT_LONGMUL. + (ARM_HALFWORD): Rename to ARM_EXT_HALFWORD. + (ARM_THUMB): Rename to ARM_EXT_THUMB. + (ARM_ARCH_V4): Remove processor from architecture. + (ARM_ARCH_3M): New architecutre definition. + (ARM_ARCH_V5TE): New architecutre definition. + (ARM_ARCH_XSCALE): New architecutre definition. + (CPU_DEFAULT): Allow to be defaulted to XScale. + (atpcs): New boolean variable. + (ldr_flags): Support 'd' flag for double word loads. + (str_flags): Support 'd' flag for double word stored. + (do_mia): New function. + (do_mar): New function. + (do_mra): New function. + (do_pld): New function. + (do_ldrd): New function. + (do_blx): New function. + (do_bkpt): New function. + (do_clz): New function. + (do_lstc2): New function. + (do_cdp2): New function. + (do_t_blx): New function. + (do_t_bkpt): New function. + (do_smla): New function. + (do_smlal): New function. + (do_smul): New function. + (do_qadd): New function. + (do_co_reg2c): New function. + (LONGEST_INSN): Redefine to 7. + + * doc/c-arm.texi: Document -mxscale, -mmarmv5te and -matpcs + command line switches. + +2000-11-22 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (pseudo_func): Add missing initializers. + (struct rsrc): Make line unsigned. + (gr_values): Add missing initializer. + (SLOT_NUM_NOT_SET): Add unsigned cast. + (ia64_elf_section_flags, output_vbyte_mem, count_output, dot_radix, + dot_fframe, dot_vframe, dot_vframesp, dot_vframepsp, dot_save, + dot_restore, dot_restorereg, dot_restorereg_p, dot_handlerdata, + dot_unwentry, dot_altrp, dot_saveg, dot_savef, dot_saveb, dot_savegf, + dot_spill, dot_spillreg, dot_spillreg_p, dot_label_state, + dot_copy_state, dot_unwabi, dot_personality, dot_proc, dot_body, + dot_prologue, dot_endp, dot_regstk, dot_psr, dot_alias, dot_ln, + dot_reg_val, dot_entry, dot_mem_offset, ia64_init, mark_resource, + md_undefined_symbol, md_apply_fix3, tc_gen_reloc, ia64_md_do_align): + Add ATTRIBUTE_UNUSED to unused parameters. + (convert_expr_to_ab_reg): Add parens. + (convert_expr_to_xy_reg): Add parens. Comment out >= REG_GR test. + (dot_prologue): Initialize grsave when declared. + (md_pseudo_table): Add missing initializers. + (operand_match): Add casts to bfd_vma. + (emit_one_bundle): Delete unused local prev. Make required_template + unsigned. + (specify_resource): Cast i to unsigned. + (note_register_values): Use fprintf_vma. + (print_dependency): Likewise. + +2000-11-21 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (generate_unwind_image): Call record_alignment + for unwind info section. + (dot_endp): Likewise for unwind section. + + * config/tc-ia64.c (emit_one_bundle): Pass size of 8 not 4 to + fix_new_exp. + +2000-11-21 Jakub Jelinek <jakub@redhat.com> + + * config/tc-sparc.c (md_pseudo_table): Add .file and .loc. + (output_insn): Call dwarf2_emit_insn. + * config/tc-sparc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. + +2000-11-17 Richard Henderson <rth@redhat.com> + + * ehopt.c (eh_frame_code_alignment): New arg `in_seg', update all + callers. Don't switch segments. Expect CIE == -1 in .debug_frame. + (check_eh_frame): Handle .eh_frame and .debug_frame concurrently. + +2000-11-17 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (md_pseudo_table): Add support for .line and + .file pseudo ops. + +2000-11-17 Richard Henderson <rth@redhat.com> + + * config/tc-i386.c (md_pseudo_table): Add .file and .loc. + +2000-11-17 Richard Henderson <rth@redhat.com> + + * dwarf2dbg.c (dwarf2_gen_line_info): Early out for no line number. + * config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Adjust for + tri-state definition of alpha_flag_mdebug. + * config/tc-alpha.c (alpha_flag_mdebug): Init to -1. + (s_alpha_file): Store first .file directive. + (s_alpha_stab): New. + (md_pseudo_table): Add stabs and stabn. + +2000-11-17 Richard Henderson <rth@redhat.com> + + * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn. + +2000-11-17 Richard Henderson <rth@redhat.com> + + * as.c (debug_type): Init to DEBUG_UNSPECIFIED. + (main): Call dwarf2_finish. + * as.h (debug_type): Clarify documentation of the meaning + of this variable. + * dwarf2dbg.c (DWARF2_LINE_MIN_INSN_LENGTH): Default to 1. + (print_stats): Fix parenthesis problem. + (now_subseg_size): New. + (dwarf2_finish): Use it. If DEBUG_DWARF2, emit bits for .debug_info. + (dwarf2_directive_file): Don't set debug_type. + (dwarf2_where): Honor DEBUG_DWARF2 first. + (dwarf2_emit_insn): Renamed from dwarf2_generate_asm_lineno; + do nothing if not emitting dwarf2 debug info, or no work. + * dwarf2dbg.h (dwarf2_emit_insn): Update. + * ecoff.c (add_file): Turn on DEBUG_ECOFF only if DEBUG_UNSPECIFIED. + (ecoff_new_file): Likewise. + * read.c (generate_lineno_debug): Kill ecoff hackery. Update + commentary wrt dwarf2. + + * config/tc-alpha.c (alpha_adjust_symtab_relocs): Add + ATTRIBUTE_UNUSED as needed. + (emit_insn): Call dwarf2_emit_insn. + (s_alpha_file): New. + (s_alpha_loc): New. + (s_alpha_coff_wrapper): Don't handle them. + (md_pseudo_table): Update for .file and .loc. + * config/tc-alpha.h (DWARF2_LINE_MIN_INSN_LENGTH): New. + + * config/tc-arm.c (output_inst): Update for dwarf2_emit_insn; + don't protect with debug_type. + * config/tc-hppa.c (md_assemble): Likewise. + * config/tc-m68hc11.c (m68hc11_new_insn): Likewise. + * config/tc-mn10300.c (md_assemble): Likewise. + * config/tc-sh.c (md_assemble): Likewise. + * config/tc-v850.c (md_assemble): Likewise. + + * config/tc-arm.c (arm_end_of_source): Remove. + * config/tc-hppa.c (pa_end_of_source): Remove. + * config/tc-m68hc11.c (m68hc11_end_of_source): Remove. + * config/tc-mn10300.c (mn10300_finalize): Remove. + * config/tc-sh.c (sh_finalize): Remove. + * config/tc-v850.c (sh_finalize): Remove. + + * config/tc-arm.h (md_end): Remove. + * config/tc-hppa.h (md_end): Remove. + (DWARF2_LINE_MIN_INSN_LENGTH): New. + * config/tc-m68hc11.h (md_end): Remove. + * config/tc-mn10300.h (md_end): Remove. + * config/tc-sh.h (md_end): Remove. + * config/tc-v850.h (md_end): Remove. + + * config/tc-ia64.c (emit_one_bundle): Don't protect + dwarf2 bits with debug_type. + (md_assemble): Likewise. + (ia64_end_of_source): Don't call dwarf2_finish. + +2000-11-16 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (errata_nop_necessary_p): Abort if general regno + >= 128 instead of > 128. Abort if predicate regno is >= 64 instead of + > 16. + +2000-11-16 H.J. Lu <hjl@gnu.org> + + * config/obj-elf.c (obj_elf_symver): Don't check the missing + version name. + +2000-11-15 Kazu Hirata <kazu@hxi.com> + + * config/tc-tic30.c: Fix formatting. + * config/tc-tic80.c: Likewise. + * config/tc-v850.c: Likewise. + * config/tc-vax.c: Likewise. + * config/tc-w65.c: Likewise. + * config/tc-z8k.c: Likewise. + +2000-11-14 DJ Delorie <dj@redhat.com> + + * config/tc-v850.c: Support dwarf2. + * config/tc-v850.h: Ditto. + + * config/tc-v850.c (cons_fix_new_v850): Don't rely on + parse_cons_expression_v850 to initialize hold_cons_reloc. + +2000-11-15 Bernd Schmidt <bernds@redhat.com> + + * config/tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX. + (errata_nops_necessary_p): New function. + (emit_one_bundle): Call it. Update the GROUP_IDX field in struct + md. + +2000-11-14 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (ia64_target_format): If EF_IA_64_BE not set, then + return little endian bfd formats. + +2000-11-14 Kazu Hirata <kazu@hxi.com> + + * config/aout_gnu.h: Fix formatting. + * config/atof-vax.c: Likewise. + * config/m68k-parse.h: Likewise. + * config/m88k-opcode.h: Likewise. + * config/obj-elf.c: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-cris.c: Likewise. + * config/tc-i386.c: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-mn10300.c: Likewise. + * config/te-386bsd.h: Likewise. + * config/te-hppa.h: Likewise. + * config/te-nbsd.h: Likewise. + * config/te-ppcnw.h: Likewise. + * config/te-sparcaout.h: Likewise. + * config/te-tmips.h: Likewise. + * config/vax-inst.h: Likewise. + * config/vms-conf.h: Likewise. + +2000-11-14 Jakub Jelinek <jakub@redhat.com> + + * config/tc-alpha.c (s_alpha_prologue): Preserve visibility bits. + +2000-11-13 H.J. Lu <hjl@gnu.org> + + * config/obj-elf.c (elf_frob_symbol): Support + ".symver name,name2@@@nodename". + (elf_frob_file_before_adjust): Likewise. + + * doc/as.texinfo: Updated for ".symver name,name2@@@nodename" + and ".symver name,name2@@@nodename". + Fix a typo. + +2000-11-12 H.J. Lu (hjl@gnu.org) + + * config/obj-elf.c (obj_elf_symver): Check missing version + name. + +2000-11-12 H.J. Lu (hjl@gnu.org) + + * dwarf2dbg.c (dwarf2_generate_asm_lineno): Use addressT + instead of bfd_vma for non-bfd assemblers. + +2000-11-09 Kazu Hirata <kazu@hxi.com> + + * itbl-ops.c: Fix comment typos. + +2000-11-08 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (struct unw_rec_list): Add slot_frag field. + (struct unwind): Add next_slot_frag field. + (slot_index): New parameters slot_frag and first_frag. Add code + to add in frag sizes when different. Add comments. + (fixup_unw_records): New locals first_frag and last_frag. Pass new + arguments to slot_index. + (emit_one_bundle): Set slot_frag field. Set next_slot_number after + loop end. Set next_slot_frag field. + +2000-11-07 H.J. Lu <hjl@gnu.org> + + * doc/as.texinfo (.symver): Updated for versioned symbol + reference. + + * obj.h (format_ops): Add the frob_file_before_adjust field. + + * config/obj-aout.c (aout_format_ops): Set the + frob_file_before_adjust field to 0. + * config/obj-coff.c (coff_format_ops): Likewise. + * config/obj-ecoff.c (ecoff_format_ops): Likewise. + + * config/obj-elf.c (obj_elf_symver): Allow duplicated version + name. + (elf_frob_file_before_adjust): New function to remove unneeded + versioned symbols from the symbol table. + (elf_format_ops): Set the frob_file_before_adjust field to + elf_frob_file_before_adjust. + + * config/obj-elf.h (obj_frob_file_before_adjust): Defined if + not defined. + + * config/obj-multi.h (obj_frob_file_before_adjust): Defined. + +2000-11-07 Peter Targett <peter.targett@arccores.com> + + * config/tc-arc.h: Avoid warnings for LITTLE_ENDIAN and + BIG_ENDIAN macros. + * config/tc-arc.c: Use S_IS_LOCAL to test local symbols. + Fix compile time warning messages. + +2000-11-07 Nick Clifton <nickc@redhat.com> + + * stabs.c (generate_asm_file): Increase length of xmalloc'ed + buffer in order to avoid buffer overflows. + +2000-11-06 Steve Ellcey <sje@cup.hp.com> + + * config/tc-ia64.c (md_shortopts, md_parse_option, md_show_usage): + Change M to m for -milp32 or -mlp64 to match gcc. + (dot_endp): Use bytes_per_address instead of 8. + (emit_one_bundle): Use number_to_chars_littleendian instead of + md_number_to_chars. + (fix_insn): Likewise. + (ia64_init): New function. + (ia64_target_format): New function. + (md_begin): Set endianness, arch, and machine as appropriate. + * config/tc-ia64.h: (TARGET_BYTES_BIG_ENDIAN, md_number_to_chars): + Make these macros depend on TE_HPUX macro. + (TARGET_FORMAT): Define. + (HOST_SPECIAL_INIT): Define. + * config/te-hpux.h: New file. + * configure.in: Add "ia64-*-hpux*" target to configure. + * configure: Regenerate. + +2000-11-06 Kazu Hirata <kazu@hxi.com> + + * as.c: Fix formatting. + * dwarf2dbg.c: Likewise. + * input-file.c: Likewise. + * input-file.h: Likewise. + * input-scrub.c: Likewise. + * itbl-ops.c: Likewise. + * listing.c: Likewise. + * macro.h: Likewise. + * messages.c: Likewise. + * read.c: Likewise. + * subsegs.c: Likewise. + * subsegs.h: Likewise. + * write.c: Likewise. + +2000-11-06 Nick Clifton <nickc@redhat.com> + + * doc/as.texinfo: Add GNU Free Documentation License. + * doc/gasp.texi: Add GNU Free Documentation License. + * doc/as.1: Add GNU Free Documentation License. + +2000-11-05 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c: Add include of "dwarf2dbg.h" + +2000-11-02 Per Lundberg <plundis@chaosdev.org> + + * configure.in: Recognise i[3456]86-chaosdev-storm-chaos. + * configure: Regenerate. + +2000-11-01 Nick Clifton <nickc@redhat.com> + + * read.c (original_case_string): New global variable. + (read_a_source_file): Copy opcode string into + original_case_string if clobbering the case of the opcode. + * read.h: Export the definition of original_case_string. + * config/tc-arm.c (md_assembler): When parsing a .req + directive use the original opcode string, not the case + clobbered version. + +2000-11-02 Nick Clifton <nickc@redhat.com> + + * config/tc-mn10300.c (debug_line): Remove this static + variable. + (md_assemble): Call dwarf2_generate_asm_lineno instead of + dwarf2_where and dwarf2_gen_line_info. + +2000-11-02 Theo Honohan <th@futuretv.com> + + * config/tc-arm.c (do_msr): Improve error message. + +2000-10-31 Eric Christopher <echristo@redhat.com> + + * config/tc-mn10300.c (md_apply_fix3): Use valuep if fully resolved + or pc-relative, else use fx_offset. + +2000-10-31 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (struct md): New field tag_fixups. + (ia64_flush_insns): Handle tag_fixups. Error if dangling + qualifying predicate. + (emit_one_bundle): Delete spurious multiplication by one. Handle + tag_fixups. + (ia64_start_line): Error if dangling qualifying predicate. + (defining_tag): New static variable. + (ia64_unrecognized_line, case '['): Parse tags. + (ia64_frob_label): Create tag_fixups. + (md_assemble): Reset md.qp.X_op after using it. + +2000-10-31 Kaz Kojima <kkojima@rr.iij4u.or.jp> + + * config/tc-sh.c (md_apply_fix [BFD_RELOC_SH_PCDISP12BY2]): Allow 4094. + +2000-10-31 Bernd Schmidt <bernds@redhat.co.uk> + + * config/tc-ia64.c (extra_goodness): Only prefer F in slot 1 and B in slot 2. + +2000-10-30 Kazu Hirata <kazu@hxi.com> + + * expr.c: Fix formatting. + * flonum-copy.c: Likewise. + * flonum.h: Likewise. + * gasp.c: Likewise. + * hash.c: Likewise. + +2000-10-30 Hans-Peter Nilsson <hp@bitrange.com> + + * as.h (OPTION_MD_BASE): Bump to 190. + * as.c (parse_args) <std_longopts>: Add comment about the need to + check OPTION_MD_BASE in as.h. + + * config/tc-sh.c (md_apply_fix): For ELF, do not "adjust back" VAL + for weak symbols. + +2000-10-27 Nick Clifton <nickc@redhat.com> + + * configure.in (emulations): Add m68hc12. + * configure: Regenerate. + * po/gas.pot: Regenerate. + +2000-10-27 Aldy Hernandez <aldyh@redhat.com> + + * config/tc-arm.c (psrs): Remove lowercase versions of spsr* and + cpsr*. + (arm_psr_parse): Handle lowercase CPSR and SPSR. + +2000-10-25 Nick Clifton <nickc@redhat.com> + + * dwarf2out.c (dwarf2_generate_asm_lineno): New function: Generate + a DWARF2 line number information sequence. + + *dwarf2out.h: Add prototype for dwarf2_generate_asm_lineno. + + * read.c (generate_lineno_debug): Update comment describing why + DWARF2 line number debug information is not generated + automatically by this function. + + * doc/as.texinfo: Note that --gdwarf2 only works on some targets, + not all. + + * config/tc-arm.h (md_end): Define. + (DWARF2_LINE_MIN_INSN_LENGTH): Define. + + * config/tc-arm.c (output_inst): Call dwarf2_generate_asm_lineno + if generating DWARF2 line numbers. + (arm_end_of_source): New function. Call dwarf2_finish if + necessary. + + * config/tc-hppa.c (md_assemble): Use dwarf2_generate_asm_lineno. + * config/tc-m68hc11.c (m68hc11_new_insn): Use dwarf2_generate_asm_lineno. + * config/tc-sh.c (md_assemble): Use dwarf2_generate_asm_lineno. + +2000-10-25 Diego Novillo <dnovillo@cygnus.com> + + * config/tc-i386.c: Fix prototype declarations for functions taking no + arguments. + +2000-10-24 Diego Novillo <dnovillo@cygnus.com> + + * config/tc-i386.c (i386_operand_modifier): Remove. + (build_displacement_string): Remove. + (i386_parse_seg): Remove. + (i386_intel_memory_operand): Remove. + (i386_intel_operand): Re-write using recursive descent parser based + on MASM documentation. + (struct intel_parser_s): New structure. + (intel_parser): New static variable. + (struct intel_token): New structure. + (cur_token, prev_token): New static variables. + (T_NIL): Define. + (T_CONST): Define. + (T_REG): Define. + (T_BYTE): Define. + (T_WORD): Define. + (T_DWORD): Define. + (T_QWORD): Define. + (T_XWORD): Define. + (T_SHORT): Define. + (T_OFFSET): Define. + (T_PTR): Define. + (T_ID): Define. + (intel_match_token): New function. + (intel_get_token): New function. + (intel_putback_token): New function. + (intel_expr): New function. + (intel_e05): New function. + (intel_e05_1): New function. + (intel_e06): New function. + (intel_e06_1): New function. + (intel_e09): New function. + (intel_e09_1): New function. + (intel_e10): New function. + (intel_e10_1): New function. + (intel_e11): New function. + +2000-10-20 Jakub Jelinek <jakub@redhat.com> + + * config/tc-sparc.c (sparc_ip): Fix a bug which caused v9_arg_p + instructions to loose any special insn->architecture mask. + + * config/tc-sparc.c (v9a_asr_table): Add v9b ASRs. + (sparc_md_end, sparc_arch_types, sparc_arch, + sparc_elf_final_processing): Handle v8plusb and v9b architectures. + (sparc_ip): Handle siam mode operands. Support v9b ASRs (and + request v9b architecture if they are used). + +2000-10-18 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * config/tc-m68k.c: Fix the previous misapplied patch. + +2000-10-18 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * config/tc-m68k.h (RELAX_RELOC_*): New definitions for both + BFD_ASSEMBLER and !BFD_ASSEMBLER. + * config/tc-m68k.c (md_convert_frag_1): Use them instead of + BFD_RELOC_*. + +2000-10-17 Kazu Hirata <kazu@hxi.com> + + * debug.c: Fix formatting. + * depend.c: Likewise. + * dwarf2dbg.c: Likewise. + * dwarf2dbg.h: Likewise. + * ecoff.c: Likewise. + * expr.c: Likewise. + * expr.h: Likewise. + * flonum-konst.c: Likewise. + * frags.h: Likewise. + +2000-10-17 Chandrakala Chavva <cchavva@redhat.com> + + * as.c: New option OPTION_TARGET_HELP. Prints all target specific + options. + * doc/as.texinfo: Added notes about this new option. + +2000-10-16 Hans-Peter Nilsson <hp@bitrange.com> + + * config/tc-sh.c (JREG): Remove. + (md_convert_frag): Remove #if 0:d code using JREG. + +2000-10-15 Diego Novillo <dnovillo@cygnus.com> + + * config/tc-i386.c (i386_operand_modifier): Only match + modifiers SHORT and FLAT if they are followed by a space. + (parse_register): When `allow_naked_reg' is set, do not confuse + identifiers that start with a register name with a register. + +2000-10-12 Kazu Hirata <kazu@hxi.com> + + * app.c: Fix formatting. + * as.c: Likewise. + * as.h: Likewise. + * bit_fix.h: Likewise. + * cgen.c: Likewise. + * cgen.h: Likewise. + * cond.c: Likewise. + +2000-10-11 Alan Modra <alan@linuxcare.com.au> + + * config/obj-elf.c (elf_frob_symbol): Revert 2000-10-07 change. + +2000-10-07 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (md_apply_fix): Remove plainly wrong assert. + Re-arrange function a little and improve error message. + + * write.c (write_relocs): Fix a comment. + + * config/obj-elf.c (elf_frob_symbol): Make section syms global on + link-once sections. + +2000-10-05 Jim Wilson <wilson@cygnus.com> + + * config/tc-ia64.c (resources_match): Handle IA64_RS_PRr. + +2000-10-05 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c: Delete some useless comments, reformat others. + + * config/tc-i386.h (TC_FIX_ADJUSTABLE): Add check to cover + non-global syms in linkonce sections. + +2000-10-04 Ralf Baechle <ralf@gnu.org> + + * config/tc-ia64.c (operand_match): Don't use // style comments. + * config/tc-i370.c: Likewise. + +2000-09-29 Hans-Peter Nilsson <hp@axis.com> + + Changes to handle varying register prefix and user symbol prefix. + * config/tc-cris.c (SYNTAX_RELAX_REG_PREFIX, + SYNTAX_ENFORCE_REG_PREFIX, SYNTAX_USER_SYM_LEADING_UNDERSCORE, + SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE, REGISTER_PREFIX_CHAR): New. + (s_syntax, cris_force_reg_prefix, cris_relax_reg_prefix, + cris_sym_leading_underscore, cris_sym_no_leading_underscore): New. + (demand_register_prefix): New variable. + (md_pseudo_table): New pseudo ".syntax". + (md_longopts): New options --no-underscore and --underscore. + (cris_target_format): Return elf32-us-cris or elf32-cris depending + on symbols_have_leading_underscore. + (get_gen_reg): Accept or require REGISTER_PREFIX_CHAR. + (get_spec_reg): Ditto. + (cris_number_to_imm) <case BFD_RELOC_VTABLE_ENTRY>: Remove FIXME. + Fix formatting. + (md_parse_option) <case 'h' 'H'>: Deprecate; add reference to + --help. + <case OPTION_NO_US, case OPTION_US>: New. + (md_show_usage): Be brief and reformat to match continuation of + --help. + * po/gas.pot: Regenerate. + +2000-09-28 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (hppa_force_relocation): If OBJ_SOM, don't + force relocs for 12 bit branches. + (md_apply_fix): Similarly, adjust logic here. + +2000-09-28 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (md_apply_fix): Add fmt assertion. Don't + adjust for external and weak syms as we will use a reloc. Allow + for +8 offset when calculating limits of branches. + (hppa_fix_adjustable): Undo 2000-09-23 change. + (hppa_force_relocation): Likewise. Add fx_addsy assertion. + Correct distance calculation. + (tc_gen_reloc): Print the file name and line number if we can't + handle a fixup. + + From John David Anglin <dave@hiauly1.hia.nrc.ca> + * config/tc-hppa.c (nonzero_dibits): Define. + (arg_reloc_stub_needed): Check each arg and return value + separately for zero case. + (pa_align): Declare argument `bytes'. + +2000-09-25 Kazu Hirata <kazu@hxi.com> + + * config/tc-cris.c: Fix formatting. + * config/tc-d10v.h: Likewise. + * config/tc-d30v.c: Likewise. + * config/tc-d30v.h: Likewise. + * config/tc-fr30.c: Likewise. + * config/tc-fr30.h: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-m68k.h: Likewise. + * config/tc-pj.h: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-ppc.h: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-sh.h: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-v850.h: Likewise. + * config/tc-vax.h: Likewise. + * config/tc-w65.h: Likewise. + * config/tc-z8k.h: Likewise. + +2000-09-23 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak + checks only for ELF. + (hppa_force_relocation): Likewise. + +2000-09-22 Jim Wilson <wilson@cygnus.com> + + * config/tc-ia64.c (dv_sem): Add "stop". + (specify_resource, case IA64_RS_PR): Only handles regs 1 to 15 now. + (specify_resource, case IA64_RS_PRr): New for regs 16 to 62. + (specify_resource, case IA64_RS_PR63): Reorder (note == 7) test to + match above. + (mark_resources): Check IA64_RS_PRr. + +2000-09-22 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * config/tc-m68k.c (md_relax_table, m68k_ip, md_convert_frag_1, + md_estimate_size_before_relax): Redesign and clean up the + relaxation mechanism. + +2000-09-21 Kazu Hirata <kazu@hxi.com> + + * config/tc-ns32k.c: Fix formatting. + * config/tc-ns32k.h: Likewise. + +2000-09-20 Kazu Hirata <kazu@hxi.com> + + * config/tc-m32r.c: Fix formatting. + * config/tc-m32r.h: Likewise. + * config/tc-m68851.h: Likewise. + * config/tc-m68hc11.c: Likewise. + * config/tc-m68hc11.h: Likewise. + * config/tc-m88k.c: Likewise. + * config/tc-mcore.c: Likewise. + * config/tc-mcore.h: Likewise. + * config/tc-mips.c: Likewise. + * config/tc-mips.h: Likewise. + * config/tc-mn10200.h: Likewise. + * config/tc-mn10300.h: Likewise. + * config/tc-tahoe.c: Likewise. + * config/tc-tahoe.h: Likewise. + +2000-09-19 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * config/tc-vax.c (synthetic_votstrs): Remove jbssi and jbcci. + Likewise in relaxation description comments. + +2000-09-18 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow + subtraction of two syms without emitting a relocation. + + From David Huggins-Daines <dhd@linuxcare.com> + * config/tc-hppa.c (hppa_force_relocation): Force relocations for + global or weak symbols. + +2000-09-15 Kazu Hirata <kazu@hxi.com> + + * config/tc-h8300.h: Fix formatting. + * config/tc-h8500.c: Likewise. + * config/tc-h8500.h: Likewise. + * config/tc-hppa.h: Likewise. + * config/tc-i370.h: Likewise. + * config/tc-i386.h: Likewise. + * config/tc-i860.c: Likewise. + * config/tc-i860.h: Likewise. + * config/tc-i960.h: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-ia64.h: Likewise. + +2000-09-14 Kazu Hirata <kazu@hxi.com> + + * config/tc-a29k.c: Fix formatting. + * config/tc-alpha.c: Likewise. + * config/tc-arc.c: Likewise. + * config/tc-arc.h: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-arm.h: Likewise. + * config/tc-avr.c: Likewise. + * config/tc-avr.h: Likewise. + * config/tc-tic30.c: Likewise. + * config/tc-tic30.h: Likewise. + * config/tc-tic54x.c: Likewise. + * config/tc-tic54x.h: Likewise. + * config/tc-tic80.c: Likewise. + * config/tc-tic80.h: Likewise. + +2000-09-14 Timothy Wall <twall@cygnus.com> + + * config/tc-ia64.c (specify_resource): For PR%/PR63, note types of + parallel comparisons for later use. + (struct rsrc): Add parallel comparison type. + (resources_match): Skip special cases of PR usage (non-conflicting + parallel compares). + +2000-09-13 Kazu Hirata <kazu@hxi.com> + + * config/obj-ecoff.c: Fix formatting. + * config/obj-elf.c: Likewise. + * config/obj-elf.h: Likewise. + * config/obj-evax.h: Likewise. + * config/obj-generic.h: Likewise. + * config/obj-hp300.c: Likewise. + * config/obj-hp300.h: Likewise. + * config/obj-ieee.h: Likewise. + * config/obj-vms.c: Likewise. + * config/obj-vms.h: Likewise. + +2000-09-13 Anders Norlander <anorland@acc.umu.se> + + * config/tc-mips.c (md_begin): Recognize 4Kc, 4Km and 4Kp processors. + (md_parse_option): Ditto. + (md_longopts): Add -mips32 option. + (md_show_usage): Document new options. + (mips_ip): Assemble sdbbp 20 bit 'm' args for MIPS32. + (mips_ip): Assemble mfc0 with a sub-selection code. + (validate_mips_insn): Handle 'H' (OP_*_SEL) and 'm' (OP_*_CODE20). + (mips_cpu_to_str): New function. + (mips_ip): Use mips_cpu_to_str instead of printing numeric cpu value. + Use CPU_* defines instead of hardcoded numbers. + + * doc/as.texinfo: Document new options. + * doc/c-mips.texi: Ditto. + +2000-09-12 Kazu Hirata <kazu@hxi.com> + + * as.h: Fix formatting. + * asintl.h: Likewise. + * bit_fix.h: Likewise. + * config/obj-aout.c: Likewise. + * config/obj-aout.h: Likewise. + * config/obj-bout.c: Likewise. + * config/obj-bout.h: Likewise. + * config/obj-coff.c: Likewise. + * config/obj-coff.h: Likewise. + * dwarf2dbg.h: Likewise. + * expr.h: Likewise. + * flonum.h: Likewise. + * frags.h: Likewise. + * itbl-ops.h: Likewise. + * macro.h: Likewise. + * read.h: Likewise. + * sb.h: Likewise. + * struc-symbol.h: Likewise. + * subsegs.h: Likewise. + * symbols.h: Likewise. + * tc.h: Likewise. + * write.h: Likewise. + +2000-09-11 Kazu Hirata <kazu@hxi.com> + + * bignum-copy.c: Fix formatting. + * config/tc-i370.c: Likewise. + * config/tc-i960.c: Likewise. + * config/tc-m68k.c: Likewise. + * ehopt.c: Likewise. + * flonum-copy.c: Likewise. + * flonum-konst.c: Likewise. + * flonum-mult.c: Likewise. + * literal.c: Likewise. + * read.c: Likewise. + * sb.c: Likewise. + * stabs.c: Likewise. + * subsegs.c: Likewise. + +2000-09-09 Philip Blundell <philb@gnu.org> + + * configure.in (arm*-*-uclinux*): New target. + * configure: Regenerate. + +2000-09-09 Kazu Hirata <kazu@hxi.com> + + * input-file.c: Fix formatting. + * itbl-ops.c: Likewise. + * messages.c: Likewise. + +2000-09-08 Philip Blundell <philb@gnu.org> + + * config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when + offset is negative. + +2000-09-07 H.J. Lu <hjl@gnu.org> + + * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM. + * configure: Rebuild. + +2000-09-07 Kazu Hirata <kazu@hxi.com> + + * atof-generic.c: Fix formatting. + * config/tc-mips.c: Likewise. + * config/tc-vax.c: Likewise. + * input-scrub.c: Likewise. + +2000-09-07 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-sh.h (TARGET_FORMAT): Use sh-linux targets. + * configure.in (sh-*-linux*): Added. + * configure: Rebuilt. + +2000-09-06 Kazu Hirata <kazu@hxi.com> + + * config/tc-hppa.c: Fix formatting. + + * ecoff.c: Fix formatting. + +2000-09-06 Alexandre Oliva <aoliva@redhat.com> + + * configure: Rebuilt with new libtool.m4. + +2000-09-05 Kazu Hirata <kazu@hxi.com> + + * cgen.c: Fix formatting. + * config/tc-ia64.c: Likewise. + +2000-09-05 Nick Clifton <nickc@redhat.com> + + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * configure: Regenerate. + * po/gas.pot: Regenerate. + +2000-09-05 Hans-Peter Nilsson <hp@axis.com> + + * config/tc-cris.c: Correct comment typos. + +2000-09-05 Eric Christopher <echristo@cygnus.com> + + * config/tc-mn10300.c: Cleanup. + (md_pcrel_from): Enable. + +2000-09-05 Alan Modra <alan@linuxcare.com.au> + + * expr.c (operand): Fix a comment typo. + * write.c (write_relocs): Fix a signed/unsigned warning. + + * config/tc-hppa.c (fudge_reg_expressions): New + (hppa_force_reg_syms_absolute): New. + (pa_equ): Allow reg_section expressions. + * config/tc-hppa.c (md_optimize_expr): Define. + (hppa_force_reg_syms_absolute): Prototype. + + * config/tc-hppa.c (pa_11_fp_reg_struct): Delete. + (pa_parse_number): Pass in arg to select fp reg parsing. + Return 1 to indicate format checks pass. If strict, then only + accept a register or register symbol. Return value in... + (pa_number): New static for pa_parse_number. + (FP_REG_BASE): Define. + (FP_REG_RSEL): Define. + (pre_defined_registers): Apply FP_REG_BASE and FP_REG_RSEL as + appropriate. White space changes. + (need_pa11_opcode): Don't bother passing any params, get them from + globals instead. + (pa_ip): Modify all calls to pa_parse_number and need_pa11_opcode. + Remove extraneous check in case 'Q'. + (pa_equ): Modify call to pa_parse_number to do strict parsing. If + reg, set section of resulting symbol to reg_section. + (pa_parse_space_stmt): Modify call to pa_parse_number. + (pa_space): Likewise. + + * config/tc-hppa.c: (md_apply_fix): Handle vtable relocs. + (hppa_force_relocation): Handle vtable relocs. + (pa_vtable_entry): New. + (pa_vtable_inherit): New. + (md_pseudo_table): Add entries for vtable pseudos. + (hppa_fix_adjustable): Reject reduction of R_PARISC_GNU_VTINHERIT + and R_PARISC_GNU_VTENTRY relocs. Reject reduction of relocs + against weak syms. + (tc_gen_reloc): Remove ELF_ARG_RELOC_INSN code. + (pa_type_args): Don't call symbol_get_bfdsym multiple times. + Set STT_PARISC_MILLICODE for OBJ_ELF when encountering a + millicode import. + * config/obj-elf.c (obj_elf_type): Allow md_elf_symbol_type to + specify a symbol type. + + * config/tc-hppa.h: Reorganize file a little, grouping OBJ_ELF + dependent things together. + (md_elf_symbol_type): Define. + + * config/tc-hppa.c (fix_new_hppa): Elide "$PIC_pcrel$0" pseudo + symbol. + * config/tc-hppa.h (tc_frob_symbol): Elide "$PIC_pcrel$0" here too. + + * config/obj-elf.h (obj_elf_vtable_inherit): Declare. + (obj_elf_vtable_entry): Declare. + + * config/obj-elf.c (obj_elf_vtable_inherit): Return struct fix * + and export function. + (obj_elf_vtable_entry): Similarly. + (elf_pseudo_table): Fix the damage with a cast. + +2000-09-03 Richard Henderson <rth@cygnus.com> + + * config/tc-ia64.c (emit_one_bundle): Stop collecting insns + for template selection when a label is needed. + +2000-09-02 Kazu Hirata <kazu@hxi.com> + + * config/tc-ia64.c: Fix formatting. + +2000-09-02 Nick Clifton <nickc@redhat.com> + + * configure.in: Increase version number to 2.10.91. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * po/gas.pot: Regenerate. + * Makefile.in: Regenerate. + +2000-09-01 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-sh.h [OBJ_ELF] (TC_FIX_ADJUSTABLE): Define. + * config/tc-sh.c (md_apply_fix): Map 32-bit relocations that + become PC-relative to BFD_RELOC_32_PCREL. Reject 16- or 8-bit + similar relocs. + (sh_obj_adjustable): Return 1 for PC-relative offsets used in + branches. + +2000-09-01 Niibe Yutaka <gniibe@m17n.org>, Kaz Kojima <kkojima@rr.iij4u.or.jp>, Alexandre Oliva <aoliva@redhat.com> + + * config/tc-sh.h (DIFF_EXPR_OK, GLOBAL_OFFSET_TABLE_NAME, + TC_RELOC_GLOBAL_OFFSET_TABLE, TC_RELOC_RTSYM_LOC_FIXUP): Define. + * config/tc-sh.c (sh_elf_cons, sh_elf_suffix): New functions. + [OBJ_ELF] (md_pseudo_table) <long, int, word, short>: Use them. + (GOT_symbol): New variable. + (md_undefined_symbol): Set it. + +2000-09-01 Richard Henderson <rth@cygnus.com> + + * config/tc-ia64.c (match): Don't inline. + (extra_goodness): New. + (md_begin): Prefer nop.f and nop.b for best_template. + +2000-08-31 Kazu Hirata <kazu@hxi.com> + + * as.c: Fix formatting. + * cond.c: Likewise. + * frags.c: Likewise. + * macro.c: Likewise. + +2000-08-31 Eric Christopher <echristo@cygnus.com> + + * config/tc-mn10300.c: Cleanup and fix warnings. + (md_pseudo_table): Add initializers. + (md_show_usage): Cleanup. + (md_parse_option): Fix warnings. + (md_undefined_symbol): Fix warnings. + (md_conver_frag): Fix warnings. + (tc_gen_reloc): Fix warnings. + (md_apply_fix3): Fix warnings. + (check_operand): Fix warnings. + +2000-08-31 Alexandre Oliva <aoliva@redhat.com> + + * acinclude.m4: Include libtool and gettext macros from the + top level. + * aclocal.m4, configure: Rebuilt. + +2000-08-30 Mark Hatle <mhatle@mvista.com> + + * config/tc-ppc.c (md_parse_option): Recognize -m405. + +2000-08-31 Kazu Hirata <kazu@hxi.com> + + * listing.c: Fix formatting. + +2000-08-29 Kazu Hirata <kazu@hxi.com> + + * app.c: Fix a comment typo. Fix formatting. + +2000-08-25 J. David Anglin <dave@hiauly1.hia.nrc.ca> + + * config/tc-vax.c (md_convert_frag): Correctly calculate the pc relative + offset of the target destination for jmp instructions. + (md_assemble): Change mode to VAX_ABSOLUTE_MODE as per comments. + +2000-08-24 Hans-Peter Nilsson <hp@axis.com> + + * NEWS: Mention support for CRIS. + +2000-08-24 Denis Chertykov <denisc@overta.ru> + + * config/tc-avr.h (TC_IMPLICIT_LCOMM_ALIGNMENT): New macros. + Sets `.lcomm' alignment to zero. + +2000-08-23 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-i386.h (OBJ_MAYBE_ELF, OBJ_MAYBE_COFF, + TC_FIX_ADJUSTABLE): Define. + +2000-08-23 Jim Wilson <wilson@cygnus.com> + + * config/tc-ia64.c (output_unw_records): Set U & E flags only if + unwind.personality_routine is set. + +2000-08-23 H.J. Lu <hjl@gnu.org> + + * write.c (TC_FIX_ADJUSTABLE): Remove the duplicate. + +2000-08-23 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-i386.h (TC_FIX_ADJUSTABLE): Do *NOT* define if target + environment is pe. + +2000-08-22 H.J. Lu <hjl@gnu.org> + + * config.in (STRICTCOFF): New for strict COFF. + + * configure.in: Define STRICTCOFF for i386-*-msdosdjgpp*, + i386-*-go32* and i386-go32-rtems*. + * configure: Rebuilt. + + * config/obj-coff.c (obj_coff_endef): Follow the historical + behavior if STRICTCOFF is not defined. + + * doc/internals.texi: Document STRICTCOFF. + +2000-08-22 Alexandre Oliva <aoliva@redhat.com> + + * write.c (TC_FIX_ADJUSTABLE): Define to 1, if not defined. + (fixup_segment) Use it instead of TC_DONT_FIX_NON_ADJUSTABLE. + * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. + <OBJ_ELF, OBJ_COFF, TE_PE> (TC_FIX_ADJUSTABLE): Define. + * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. + <OBJ_ELF> (TC_FIX_ADJUSTABLE): Define. + * config/tc-i960.h, config/tc-m68k.h, config/tc-v850.h: + Likewise. + +2000-08-22 Eric Christopher <echristo@cygnus.com> + + * config/tc-mn10300.c: (md_apply_fix): New function. + (mn10300_force_relocation): New function. + (mn10300_fix_adjustable): New function. + + * config/tc-mn10300.h: (TC_FORCE_RELOCATION): Define. + (TC_HANDLES_FX_DONE): Define. + (obj_fix_adjustable): Define. + (MD_APPLY_FIX3): Define. + (TC_LINKRELAX_FIXUP): Define. + + * write.c: (TC_LINKRELAX_FIXUP): Define if not + previously defined. + (fixup_segment): Use TC_LINKRELAX_FIXUP. + + * doc/internals.texi: Document TC_LINKRELAX_FIXUP. + +2000-08-21 Jason Eckhardt <jle@cygnus.com> + + * config/tc-i860.c (md_apply_fix3): Do not insert the immediate + if the fixup resulted in a relocation. + +2000-08-18 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (decode_shift): Replace as_tsktsk with as_warn. + Make reference to first element of shift_names explicit. + +2000-08-18 Alexandre Oliva <aoliva@redhat.com> + + * write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: Use + obj_fix_adjustable() and tc_fix_adjustable() to tell whether to + add a symbol's address. Removed all target-specific #ifdefs that + used to accomplished the same. + * config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + * config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + * config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + +2000-08-17 Kazu Hirata <kazu@hxi.com> + + * dwarf2dbg.c: Fix formatting. + +2000-08-17 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (decode_shift): Allow illegal shifts by zero + to be recoded as logical shift lefts by zero. + +2000-08-16 Jim Wilson <wilson@cygnus.com> + + * config/tc-ia64.c (specify_resource, case IA64_RS_GR): Handle + postincrement modified registers. Handle IA64_OPND_R3_2 addl + source registers. + (note_register_values): Handle IA64_OPND_R3_2 operands. + +2000-08-16 Jason Eckhardt <jle@cygnus.com> + + * config/tc-i860.c (md_operand): Silly typo fixed. + +2000-08-16 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (struct asm_shift): Delete. + (shift[]): Delete. + (enum asm_shift_index): New. + (struct asm_shift_properties): New. + (struct asm_shift_name): New. + (shift_properties[]); New. + (shift_names[]); New. + + (decode_shift): Use new structures. + Issue a warning is "ROR #0" is used. + Issue a warning if "ASR #0" or "LSR #0" is used. + + (md_begin): Initialise arm_shift_hsh table from new + asm_shift_name array. + +2000-08-16 Jakub Jelinek <jakub@redhat.com> + + * config/tc-sparc.c: Kill all warnings. + (md_parse_option): Set -32/-64 for -xarch=, allow all -A archs + in -xarch= as well. + (md_show_usage): Update usage text. + +2000-08-16 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (do_bx): Warn about "bx px" not being very + useful. + +2000-08-15 Will Cohen <wcohen@redhat.com> + + * config/tc-sh.h (DWARF2_LINE_MIN_INSN_LENGTH): Defined. + + * config/tc-sh.c (md_assemble): Changed so debug_type + test performed for ppi_assemble + * config/tc-sh.c: Included dwarf2dbg.h. + (debug_line): Defined. + (md_assemble): Generates dwarf2 line info. + (sh_finalize): New function. Finalize dwarf2 info. + (assemble_ppi): Returns size of code generated. + (build_Mytes): Returns size of code generated. + (md_pseudo_table): Added "file" and "loc" psuedo ops. + * config/tc-sh.h (md_end): Defined. + (sh_finalize): Declared. + +2000-08-15 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-sh.c (md_apply_fix) [BFD_RELOC_32, BFD_RELOC_16]: Use + md_number_to_chars. + +2000-08-14 Nick Clifton <nickc@redhat.com> + + * config/tc-arm.c (do_bx): Allow "bx pc". + +2000-08-14 Jim Wilson <wilson@cygnus.com> + + * config/tc-ia64.c (md_longopts): Add -mconstant-gp and -mauto-pic. + (md_parse_option): Add OPTION_MCONSTANT_GP and OPTION_MAUTO_PIC. + (md_begin): Change assignment to md.flag to OR in the new bit. + +2000-08-14 Mark Elbrecht <snowball3@bigfoot.com> + + * config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Set the debug + flag for storage types C_ARG, C_REGPARM, C_FIELD, C_MOS, C_MOE, + C_MOU, and C_EOS. + +2000-08-14 Jason Eckhardt <jle@cygnus.com> + + * NEWS: Mention i860 support. + +2000-08-14 Jeffrey A Law (law@cygnus.com) + + * config/tc-mn10300.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. + +2000-08-14 Andreas Schwab <schwab@suse.de> + + * doc/c-arm.texi (ARM Directives): Fix warnings from makeinfo. + +2000-08-11 Andreas Schwab <schwab@suse.de> + + * doc/c-i860.texi (Opcodes for i860): Remove braces from @item + argument. + +2000-08-11 Kazu Hirata <kazu@hxi.com> + + * expr.c: Fix formatting. + * config/obj-bout.c: Likewise. + +2000-08-10 Jason Eckhardt <jle@cygnus.com> + + * doc/c-i860.texi: Flesh out the i860 section more. + +2000-08-10 Kazu Hirata <kazu@hxi.com> + + * symbols.c: Fix formatting. + * expr.c: Likewise. + +2000-08-09 Diego Novillo <dnovillo@cygnus.com> + + * config/tc-i386.c (md_assemble): Skip suffix check if the opcode + modifier has the IgnoreSize bit set. + +2000-08-09 Alan Modra <alan@linuxcare.com.au> + + From Rodney Brown <RodneyBrown@mynd.com> + * configure.in: Use elf on Unixware 7 (i586-sco-sysv5uw7.1.0) + * configure: Regenerate. + +2000-08-09 Kazu Hirata <kazu@hxi.com> + + * hash.c: Fix formatting. + * gasp.c: Likewise. + +2000-08-08 Jason Eckhardt <jle@cygnus.com> + + * config/tc-i860.h: Rework completely for BFD_ASSEMBLER. + (i860_fix_info): New enum. + (MD_APPLY_FIX3): Define. + (WORKING_DOT_WORD): Define. + (TC_HANDLES_FX_DONE): Define. + (DIFF_EXPR_OK): Define. + (LISTING_HEADER): Define. + (TARGET_FORMAT): Select target format based on endian flag. + (TARGET_BYTES_BIG_ENDIAN): Default to little endian. + (target_big_endian): Add external declaration. + + * config/tc-i860.c: All existing code reworked completely. Other + new code shown below. + (SYNTAX_SVR4): Define. + (target_warn_expand): New variable. + (md_shortopts): Declare and define (-Qy, -Qn, and -V options). + (md_longopts): Declare and define with new options (-EL, -EB, + and -mwarn-expand). + (md_show_usage): New function. + (md_operand): New function. + (obtain_reloc_for_imm16): New function. + (md_apply_fix3): New function. + (tc_gen_reloc): New function. + +2000-08-08 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * config/tc-m68hc11.c (build_jump_insn): Make sure the + 2 bytes of the jump address are in the same frag. + (find): Accept 68hc12 register indirect modes. + + * NEWS: Mention 68HC11 & 68HC12 support. + +2000-08-07 Richard Henderson <rth@cygnus.com> + + * config/tc-ia64.c (unwind): Add prologue_mask member. + (dot_vframe): Elide psp_gr record if it overlaps prologue_gr. + (dot_save): Likewise for pfs_gr, rp_gr, and preds_gr. + (dot_body): Clear unwind.prologue_mask. + (dot_prologue): Set it. Accept a register second argument. + +2000-08-07 Kazu Hirata <kazu@hxi.com> + + * config/atof-ieee.c: Fix formatting. + * config/atof-tahoe.c: Likewise. + +2000-08-06 Nick Clifton <nickc@cygnus.com> + + * config/tc-sparc.c (md_begin): Fix typo in recent formatting + work. + + * doc/as.texinfo (Pseudo Ops): Update to include descriptions + of .popsection, .previous, .pushsection, .subsection, + .version, .vtable_entry, .vtable_inherit and .weak. + +2000-08-05 Kazu Hirata <kazu@hxi.com> + + * config/tc-cris.c: Fix formatting. + * config/tc-i386.c: Likewise. + * config/tc-sparc.c (sparc_ip): Simplify the code. + +2000-08-04 Kazu Hirata <kazu@hxi.com> + + * config/tc-cris.c: Rearrange code for readability. + * config/tc-d10v.c: Fix formatting. + * config/tc-m32r.c: Likewise. + * config/tc-sparc.c: Likewise. + +2000-08-02 Jim Wilson <wilson@cygnus.com> + + * config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode + before ia64_find_opcode. + (md_assemble): Likewise. + +2000-08-01 Nick Clifton <nickc@cygnus.com> + + * config/tc-arm.c (do_mrs): Fix skip of 'cpsr_all' flag. + Undo some formatting fixes. + +2000-08-01 Kazu Hirata <kazu@hxi.com> + + * config/obj-som.c: Fix formatting. + * config/obj-ieee.c: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-v850.c: Likewise. + +2000-08-01 Nick Clifton <nickc@redhat.com> + + * doc/c-m68k.texi (section M680x0 Options): Turn into a table + index by command line option. + +2000-08-01 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * doc/c-m68k.texi (@cindex @samp{--pcrel}): Rewrite option description. + (@node M68K-Branch): Rewrite to match the reality. + +2000-07-31 Jason Eckhardt <jle@cygnus.com> + + * doc/c-i860.texi: New file. + * doc/Makefile.am (CPU_DOCS): Add c-i860.texi. + * doc/Makefile.in: Regenerate. + * doc/all.texi: Add I860 as relevant architecture. + * doc/as.texinfo: Include i860 dependent file c-i860.texi. + +2000-07-31 Kazu Hirata <kazu@hxi.com> + + * config/tc-d30v.c: Fix formatting. + +2000-07-31 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * config/tc-m68k.c (flag_keep_pcrel, OPTION_PCREL): Add --pcrel option. + (md_convert_frag_1, md_estimate_size_before_relax): When making DBcc + long emit a long branch if available instead of an absolute jump, never + emit absolute jumps for anything with --pcrel. + + * doc/c-m68k.texi: Document new command line option. + +2000-07-29 Marek Michalkiewicz <marekm@linux.org.pl> + + * config/tc-avr.c: Use PARAMS macro in function declarations. + Don't declare md_pcrel_from_section (already in tc-avr.h). + (avr_operands): Use AVR_UNDEF_P and AVR_SKIP_P macros. + (avr_operand): Don't set (unsigned) op_mask to -1. + +2000-07-28 Jason Eckhardt <jle@cygnus.com> + + * configure.in: Add bits for i860-stardent-{sysv4, elf}*. + * configure: Regenerated. + * config/obj-elf.c (obj_elf_type): Recognize a fifth type + of operand to the .type directive (.e.g, "type"). + +2000-07-28 Alan Modra <alan@linuxcare.com.au> + + * as.h (warn_comment, found_comment, found_comment_file): Declare. + * app.c (do_scrub_chars): Record where first comment found. + * read.c (read_a_source_file): Init found_comment on entry, and + notify whether comments found on exit. + * config/tc-hppa.c (md_shortopts): Add "c". + (md_longopts): Add warn-comment. + (md_parse_option): Handle it. + (md_show_usage): Show available options. + * config/tc-hppa.h (WARN_COMMENTS): Define if TE_LINUX + +2000-07-27 Andrew Cagney <cagney@b1.cygnus.com> + + * config/tc-mn10300.c (md_convert_frag): Fix printfs. + (tc_gen_reloc): Add cast when assigning bfd_abs_symbol to + sym_ptr_ptr + (md_estimate_size_before_relax): Don't fall off end of function. + +2000-07-27 Kazu Hirata <kazu@hxi.com> + + * config/tc-avr.c: Fix formatting. + * config/tc-ns32k.c: Likewise. + +2000-07-27 Alan Modra <alan@linuxcare.com.au> + + * config/tc-d10v.c (find_opcode): Remove extraneous `='. + +2000-07-27 Kazu Hirata <kazu@hxi.com> + + * config/tc-d10v.c: Fix formatting. + * config/tc-z8k.c: Likewise. + * config/tc-sparc.c: Likewise. + +2000-07-26 Dave Brolley <brolley@redhat.com> + + * cgen.c (queue_fixup): Declare opinfo. + (gas_cgen_parse_operand): Mark unused parameters with ATTRIBUTE_UNUSED. + (gas_cgen_md_operand): Ditto. + (gas_cgen_md_apply_fix3): Ditto. + +2000-07-24 Mark Elbrecht <snowball3@bigfoot.com> + + * config/obj-coff.c (obj_frob_symbol): Don't merge + labels. Don't merge if the symbol isn't constant. Return + immediately if a symbol is merged. + +2000-07-22 Alan Modra <alan@linuxcare.com.au> + + * frags.c (frag_align): Correct absolute section alignment. + +2000-07-20 DJ Delorie <dj@redhat.com> + + * config/obj-coff.c (obj_frob_symbol): revert previous change, + it breaks linking against DLLs. + +2000-07-20 Hans-Peter Nilsson <hp@axis.com> + + * configure.in: Add CRIS support. + * configure: Regenerate. + * Makefile.am: (CPU_TYPES): Add cris. + (CPU_OBJ_VALID) [aout]: Add cris. + (MULTI_CPU_TYPES): Add cris. + (MULTI_CPU_OBJ_VALID) [aout]: Add cris. + [coff]: Only i386 and mips are valid. + (TARGET_CPU_CFILES): Add config/tc-cris.c. + (TARGET_CPU_HFILES): Add config/tc-cris.h. + (MULTI_CFILES): Add config/e-crisaout.c and config/e-criself.c. + Regenerate dependencies. + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * as.c: Declare crisaout, criself. + * config/tc-cris.h, config/tc-cris.c: New. + * config/e-criself.c, config/e-crisaout.c: New. + * po/POTFILES.in, po/gas.pot: Regenerate. + +2000-07-20 Kazu Hirata <kazu@hxi.com> + + * read.c: Fix formatting. + * write.c: Fix formatting. + +2000-07-19 H.J. Lu <hjl@gnu.org> + + * sb.c: Include <stdlib.h> if exists for abort (). + +2000-07-19 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (hppa_fix_adjustable): Correct LR%/RR% comment. + (arg_reloc_stub_needed): #ifdef OBJ_SOM, not #ifdef SOM. + (pa_type_args): Same here. + +2000-07-17 Mark Elbrecht <snowball3@bigfoot.com> + + * config/obj-coff.c (obj_frob_symbol): Don't merge labels. Don't + merge if the symbol isn't constant. Don't call S_SET_EXTERNAL if + the storage class is already set. + +2000-07-17 Kazu Hirata <kazu@hxi.com> + + * config/tc-m68hc11.c: Fix formatting. + * config/tc-mn10200.c: Likewise. + * config/tc-mn10300.c: Likewise. + * config/tc-pj.c: Likewise. + * config/tc-tic80.c: Likewise. + * config/tc-w65.c: Likewise. + +2000-07-17 Frank Ch. Eigler <fche@redhat.com> + + * expr.c (operand): Permit %bin literals if LITERAL_PREFIXPERCENT_BIN + is defined. + +2000-07-15 Ian Lance Taylor <ian@zembu.com> + + * doc/c-mips.texi (MIPS Opts): Remove erroneous space after + @code. + +2000-07-15 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (hppa_fix_adjustable): Use the same checks for + ELF as are used for SOM (except the 32-bit reloc one) to decide + whether a symbol can be reduced to a section symbol. Expand on + the comment for symbols involved in LR% and RR% expressions. + +2000-07-14 Nick Clifton <nickc@cygnus.com> + + * config/tc-mips.c (mips_disable_float_construction): New + static variable. Set to true if doubles should not be + constructed by loading two single width fp registers with + halves of the value. + (mips_ip): Test mips_disable_float_construction. + (md_longopts): Add command line switches --construct-floats + and --no-construct-floats. + (md_parse_option): Parse new command line options. + (md_show_usage): Describe new command line options. + + * doc/c-mips.texi: Document new command line options. + +2000-07-13 Koundinya K <kk@ddeorg.soft.net> + + * configure.in: Remove the test /usr/dde for mips-*-sysv4*MP* + * configure: Regenerate. + +2000-07-13 Hans-Peter Nilsson <hp@axis.com> + + * configure.in (DEFAULT_EMULATION setting): Revert part of + 2000-07-01 change that set te_multi=multi unless set to tmips. + * configure: Regenerate. + +2000-07-12 Mark Elbrecht <snowball3@bigfoot.com> + + * config/obj-coff.c (coff_frob_section): Add padding to the last + section when aligning it increases its size. + +2000-07-11 Kazu Hirata <kazu@hxi.com> + + * config/tc-tic54x.c: Fix formatting. + +2000-07-10 Kazu Hirata <kazu@hxi.com> + + * config/tc-h8500.c: Fix formatting. + * config/tc-tic54x.c: Fix formatting. + +2000-07-10 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (md_apply_fix): Check fmt 12 and 22 pc-rel + displacements correctly. + + * read.h (s_abort): Add ATTRIBUTE_NORETURN. + +2000-07-10 Ryan Bradetich <rbradetich@uswest.net> + + * hash.c (hash_insert): Add cast to obstruct_alloc to fix + warning. + (hash_jam): Ditto. + +2000-07-09 Alan Modra <alan@linuxcare.com.au> + + From David Huggins-Daines <dhd@linuxcare.com> + * config/te-hppalinux64.h: Add a new emulation. + * configure.in (emulations): Add configure bits to support the + 64-bit Linux/parisc target. + * configure: Regenerate. + + * config/tc-hppa.c (md_parse_option): Support `-V' for ELF. + (md_shortopts): Add `V' for ELF. + + * config/tc-hppa.c (arg_reloc_stub_needed): Define as zero except + when SOM or ELF_ARG_RELOC are defined. + (pa_type_args): Only set symbol_arg_reloc_info when SOM or + ELF_ARG_RELOC are defined. + (pa_stringer_aux): Don't pa_check_current_space_and_subspace here.. + (pa_stringer): ..Do it here instead. Fix comment typos. + (hppa_force_relocation): Cast enums to int before comparing with + ints. + + From Ryan Bradetich <rbradetich@uswest.net> + * config/tc-hppa.c: Removed unneeded libbfd.h to fix macro + redifinition warning. + (md_apply_fix): Added cast from enum to int for fixP->fx_r_type. + (hppa_force_relocation): ditto + (md_apply_fix): Added cast to buf to fix warnings. + + * config/tc-hppa.h (pa_define_label, parse_cons_expression_hppa, + cons_fix_new_hppa, hppa_force_relocation): Prototype. + + * config/tc-hppa.c (reloc_type): It's an enum for OBJ_ELF. + (R_N0SEL, R_N1SEL): Define only for OBJ_SOM. + (tc_gen_reloc): Make `code' a reloc_type and `codes' a + reloc_type** to avoid warnings in switch. + (md_apply_fix): Make insn, val signed. Zap buf_wd and read insn a + little earlier instead. + + * config/tc-hppa.c (symbol_arg_reloc_info): Define for both som + and elf. + (pa_type_args): Use symbol_arg_reloc_info. + (struct pa_it): Make arg_reloc unsigned int. + (struct hppa_fix_struct): Likewise for fx_arg_reloc. + (pa_text, pa_data, pa_comm): Don't compile for TE_LINUX. + (pa_code): Delete. pa_text duplicates this function. + (md_pseudo_table): Call obj_elf_text for ".code" if TE_LINUX. + (fix_new_hppa): Argument offset is offsetT, arg_reloc is unsigned + int. + (cons_fix_new_hppa): Actually change selector to e_fsel when + warning about assuming so. + (tc_gen_reloc): More example elf arg reloc code. + (md_apply_fix): Use arg_reloc_stub_needed for elf too. + (hppa_force_relocation): Likewise. + + * config/tc-hppa.h: Use TARGET_ARCH_SIZE to select target include + files. + (pa_end_of_source): Prototype. + (hppa_fix_adjustable): Prototype. + (LABELS_WITHOUT_COLONS): Move it.. + * config/te-hppa.h: To here. + + * config/te-hppa64.h: New file. + + * config/tc-hppa.c: Use TARGET_ARCH_SIZE to select target reloc + type. + (md_apply_fix): Pass stdoutput to bfd_hppa_insn2fmt. Handle + format -10, -16, 16 relocs. + (hppa_elf_mark_end_of_function): Test for null + last_call_info->start_symbol + + * config/tc-hppa.c (pa_ip): In case 'V', pass `strict' to + CHECK_FIELD, not INSERT_FIELD_AND_CONTINUE. Don't pass opcode to + re_assesmble_* functions. Delete extraneous statements. Fix + typos in comments. + (md_apply_fix): Compare against 1048575 in case 21. Don't pass + insn to re_assemble_*. + +2000-07-08 Ulf Carlsson <ulfc@engr.sgi.com> + + * doc/internals.texi (Expressions): Fix typo. + +2000-07-08 Kazu Hirata <kazu@hxi.com> + + * config/tc-sh.c: Fix formatting. + * config/tc-tic54x.c: Fix formatting. + * depend.c: Fix formatting. + * flonum-konst.c: Likewise. + * flonum-mult.c: Likewise. + +2000-07-07 Kazu Hirata <kazu@hxi.com> + + * config/tc-sh.c: Fix comments. + * config/obj-vms.c: Fix comments. + * config/tc-a29k.c: Likewise. + * config/tc-alpha.c: Likewise. + * config/tc-h8300.c: Likewise. + * config/tc-h8500.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-m68hc11.c: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-mips.c: Likewise. + * config/tc-ns32k.c: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-z8k.c: Likewise. + +2000-07-06 Mark Elbrecht <snowball3@bigfoot.com> + + * config/obj-coff.c (TC_COFF_SECTION_DEFAULT_ATTRIBUTES): New. + Default to '(SEC_LOAD | SEC_DATA)'. + (obj_coff_section) [BFD_ASSEMBLER]: Use it. + + * doc/internals.texi (CPU Backend): Describe + TC_COFF_SECTION_DEFAULT_ATTRIBUTES. + +2000-06-06 Andrew Cagney <cagney@b1.cygnus.com> + + * as.c (parse_args): NULL terminate the long option list. + +2000-06-04 Andrew Cagney <cagney@b1.cygnus.com> + + * config/tc-d30v.h: Include "write.h" for fixS. + (d30v_start_line, md_pcrel_from_section): Add function prototypes. + +2000-07-05 Nick Clifton <nickc@cygnus.com> + + * config/tc-d30v.c (write_2_short): Further changes to warning + messages produced when combining EITHER_BUT_PREFER_MU attributed + opcodes. + +2000-07-05 DJ Delorie <dj@redhat.com> + + * MAINTAINERS: new + +2000-07-04 Alexandre Oliva <aoliva@redhat.com> + + * config/tc-arm.c (psrs): Accept combinations of flags. + +2000-07-03 Marek Michalkiewicz <marekm@linux.org.pl> + + * config/tc-avr.c: Change _ () to _() around all strings marked + for translation (exception from the usual coding style). + (avr_opt): New struct variable, how the new switches are set. + (OPTION_MMCU): Define as 'm' and actually use. + (md_longopts): Add -mall-opcodes, -mno-skip-bug, -mno-wrap. + (show_mcu_list): New function, display the list of known MCUs. + (md_show_usage): Document the new switches. Call show_mcu_list. + (avr_set_arch): Change 'm' to OPTION_MMCU. + (md_parse_option): Call show_mcu_list if unknown MCU specified. + Handle the new switches. + (avr_operands): Disable warnings for undefined combinations of + operands if -mall-opcodes. Disable warnings for skipping two-word + instructions if enhanced core or -mno-skip-bug. + (avr_operand): Accept all addressing modes on avr1 if -mall-opcodes. + (md_apply_fix3): Reject 8K wrap if >8K or -mno-wrap. + (md_assemble): Accept opcodes not supported by MCU if -mall-opcodes. + (avr_ldi_expression): Warn about implicit lo8(). + * config/tc-avr.h (md_pcrel_from_section): Add prototype. + +2000-07-01 Koundinya K <kk@ddeorg.soft.net> + + * configure.in: Add entry for mips-*-sysv4*MP* + * configure: Rebuild + * config/tc-mips.c (mips_target_format): Return elf32-tradbigmips or + elf32-tradlittlemips for traditional mips targets. + * config/tc-mips.c (md_estimate_size_before_relax): Duplicate the + test for Link Once sections as in adjust_reloc_syms. + * config/te-tmips.h: New file for traditional mips targets. Define + TE_TMIPS. + +2000-06-29 Mark Elbrecht <snowball3@bigfoot.com> + + * config/obj-coff.c (obj_coff_setcion) [BFD_ASSEMBLER]: If the + flags argument is not present, don't change an existing section's + section's attributes. If the flags argument is present, warn if the + attributes don't match the section's current attributes. When + long section names are supported, set SEC_LINK_ONCE and + SEC_LINK_DUPLICATES_DISCARD for a new .gnu.linkonce section. + +2000-06-29 Hans-Peter Nilsson <hp@axis.com> + + * config/obj-aout.c (obj_aout_type): Do not ignore for undefined + symbols; create them. + +2000-06-29 Mark Elbrecht <snowball3@bigfoot.com> + + * write.c (set_segment_vma): New: Set vma and lma for a segment. + (write_object_file) [BFD_ASSEMBLER && OBJ_COFF && TE_GO32]: Use it. + +2000-06-27 Aldy Hernandez <aldyh@redhat.com> + + * config/tc-mips.c (mips_ip): handle "(foo-.-4)" type of + expressions. Ignore the problem when handling 16 bit signed + immediates, because the assembler will take care of the relocation + later. + +2000-06-27 Nick Clifton <nickc@cygnus.com> + + * config/tc-d30v.c (write_2_short): Do not allow opcodes with + the EITHER_BUT_PREFER_MU attribute to be combined into a reverse + sequential order, and emit warning messages if the input source + code contains constructs like that, or parallel constructs + containing such opcodes. + +2000-06-26 Marek Michalkiewicz <marekm@linux.org.pl> + + * config/tc-avr.c (mcu_types): Rename avr4 to avr5, add avr4. + Add more MCU types for avr4 and avr5. Replace at94k{10,20,40} + with just at94k. Change AVR_ISA_85xx back to AVR_ISA_2xxx. + (md_show_usage): Update usage message. + (md_parse_option): Allow redefinition of MCU type within the + same avr[1-5] bfd machine type. Show both old and new MCU type + in the error message. + (md_apply_fix3): Support 8K wrap if AVR_ISA_MEGA is not set. + Simplify 8K wrap code. + +2000-06-25 Kazu Hirata <kazu@hxi.com> + + * config/obj-aout.c: Remove all uses of DEFUN. + * config/obj-ieee.c: Likewise. + * config/tc-sh.c: Fix comment typos. + * config/tc-tahoe.c: Likewise. + * config/tc-vax.c: Likewise. + * config/tc-w65.c: Likewise. + * config/tc-z8k.c: Likewise. + * config/tc-h8300.c (build_bytes): Assemble ldmac correctly. + +2000-06-24 DJ Delorie <dj@cygnus.com> + + * config/tc-i386.c (md_estimate_size_before_relax): Revert + more changes from Sept 1999 + (tc_i386_fix_adjustable): ditto + (md_apply_fix3): ditto + +2000-06-24 Frank Ch. Eigler <fche@redhat.com> + + * cgen.c (expr_jmp_buf_p): New validity flag for expr_jmp_buf. + (gas_cgen_parse_operand): Set it around expression() call. + (gas_cgen_md_operand): Test for it before longjmp(). + +2000-06-24 Kazu Hirata <kazu@hxi.com> + + * config/tc-h8500.c: Remove all uses of DEFUN. + * config/tc-sh.c: Likewise. + * config/tc-w65.c: Likewise. + * config/tc-z8k.c: Likewise. + + * config/tc-h8500.c: Fix typos in comments. + +2000-06-23 Frank Ch. Eigler <fche@redhat.com> + + * expr.c (operand): Permit $hex literals if LITERAL_PREFIXDOLLAR_HEX + is defined. + +2000-06-23 matthew green <mrg@redhat.com> + + * expr.c (operand): Do not as_bad() if RELAX_PAREN_GROUPING is + defined. Fix error message for `[' grouping. + +2000-06-22 Kazu Hirata <kazu@hxi.com> + + * config/tc-h8300.c: Fix formatting and comment typos. + +2000-06-22 Timothy Wall <twall@cygnus.com> + + * config/tc-ia64.c (note_register_values): Move premature QP + notation clearing into the appropriate place. + +2000-06-22 Alan Modra <alan@linuxcare.com.au> + + * dep-in.sed: Escape literal `.'s on patterns. Trim off `../' + first before anything else. Add bin-bugs.h, emul.h and progress.h + Sort list of files as for $(OBJS) in Makefile.am. + + * Makefile.am (DEP): grep for leading `/' in DEPA, and fail if we + find one. Remake dependencies. + ($(OBJS)): Add bin-bugs.h, emul.h, and progress.h Sort the list. + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + + * config/tc-i386.c (i386_displacement): Don't assume a constant + displacement is necessarily 16 bits when in 16 bit code mode. + (md_assemble): Instead size the displacement here after we know + for sure that a .code16gcc operand hasn't automatically added + operand size prefixes. + +2000-06-21 H.J. Lu <hjl@gnu.org> + + * Makefile.am: Rebuild dependency. + * Makefile.in: Rebuild. + +2000-06-21 Kazu Hirata <kazu@hxi.com> + + * config/tc-h8300.c (parse_reg): Make the function static. + (parse_exp): Likewise. + +2000-06-20 DJ Delorie <dj@cygnus.com> + + * config/tc-i386.c (tc_i386_fix_adjustable): Revert change from + Sept 1999; RVA relocs need to be treated more like DIR32 relocs + for cygwin import libraries to work properly. + +2000-06-20 H.J. Lu <hjl@gnu.org> + + * Makefile.am: Rebuild dependency. + * Makefile.in: Rebuild. + * configure: Likewise. + * doc/Makefile.in: Likewise. + +2000-06-20 Timothy Wall <twall@cygnus.com> + + * doc/internals.texi (CPU backend): Add @itemx for + TC_START_LABEL_WITHOUT_COLON. + * doc/c-tic54x.texi: New. + * doc/as.texinfo: Add tic54x features and include primary tic54x + documentation file. + * doc/all.texi: Add C54X. + * doc/Makefile.am (CPU_DOCS): Add c-tic54x.texi. + * doc/Makefile.in: Regenerate. + * configure.in: Add tic54x and define LIBM for tic54x. + * configure: Regenrate. + * config/tc-tic54x.[ch]: New. + * config/obj-coff.h: Add tic54x. + * Makefile.am: (CPU_TYPES): Add tic54x. + (TARGET_CPU_CFILES): Add 'tc-tic54x.c'. + (TARGET_CPU_HFILES): Add 'tc-tic54x.h'. + (as_new_LDADD): Add $(LIBM). + * Makefile.in: Regenerate. + +2000-06-18 Stephane Carrez <stcarrez@worldnet.fr> + + * doc/Makefile.am (CPU_DOCS): Added 68hc11 file. + * doc/c-m68hc11.texi: Document 68HC11 and 68HC12 port. + * doc/as.texinfo: Likewise. + + * configure, Makefile.in: Regenerate. + * configure.in (emulations): Recognize m6811 and m6812. + * Makefile.am (CPU_TYPES, TARGET_CPU_CFILES, TARGET_CPU_HFILES): + Added files for 68hc11 and 68hc12 assembler. + * config/tc-m68hc11.c: Assembler for 68hc11 and 68hc12. + * config/tc-m68hc11.h: Header definition for that assembler. + +2000-06-18 Nick Clifton <nickc@redhat.com> + + * symbols.c (resolve_symbol_value): Use bfd_octets_per_byte + instead of OCTETS_PER_BYTE. + + * config/tc-v850.c: Fix compile time warnings. + * config/tc-ppc.c: Fix compile time warnings. + +2000-06-18 H.J. Lu <hjl@gnu.org> + + * configure.in: Don't emulate i386-pc-pe-coff with i386coff. + * configure: Rebuild. + +2000-06-17 Mark Elbrecht <snowball3@bigfoot.com> + + * config/obj-coff.c (obj_coff_weak): Typo fix: Change BFD_ASSEMLER + to BFD_ASSEMBLER. + +2000-06-16 Nick Clifton <nickc@cygnus.com> + + * config/tc-mips.c (md_parse_option): Accept RM5200,RM5230, + RM5231, RM5261, RM5721 and RM7000 as r5000 cpu variants. + + * doc/c-mips.texi: Document newly accepted cpu variants. + +2000-06-15 Ulf Carlsson <ulfc@engr.sgi.com> + + * config/tc-mips.h: Remove definition of ONLY_STANDARD_ESCAPES. + +2000-06-13 Ulf Carlsson <ulfc@engr.sgi.com> + + * macro.c (getstring): Make it possible to escape the quote + character. + +2000-06-13 Catherine Moore <clm@redhat.com> + + * config/tc-hppa.c (pa_export): Weak symbols can be global. + +2000-06-13 H.J. Lu <hjl@gnu.org> + + * configure: Regenerate. + +2000-06-09 Alan Modra <alan@linuxcare.com.au> + + * app.c (do_scrub_begin): Don't default lex[';'] as a line + separator. + * doc/internals.texi (line_separator_chars): Semicolon is no + longer a default. Mention null and newline as defaults. + + * read.c (is_end_of_line): Remove ifdef TC_HPPA. + + * config/tc-i386.h (line_separator_chars): Explicitly mention `;' + * config/tc-i860.h (line_separator_chars): Likewise. + * config/tc-h8300.c (line_separator_chars): Likewise. + * config/tc-i960.c (line_separator_chars): Likewise. + * config/tc-m68k.c (line_separator_chars): Likewise. + * config/tc-mips.c (line_separator_chars): Likewise. + * config/tc-ns32k.c (line_separator_chars): Likewise. + * config/tc-sparc.c (line_separator_chars): Likewise. + * config/tc-vax.c (line_separator_chars): Likewise. + + * config/tc-h8300.c (comment_chars): Use string initialiser. + * config/tc-i960.c (line_comment_chars): Likewise. + * config/tc-z8k.c (comment_chars, line_comment_chars, + line_separator_chars): Likewise. + + * config/tc-arm.c (line_separator_chars): Always use `;', not just + for TE_LINUX. + +2000-06-08 Nick Clifton <nickc@cygnus.com> + + * config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value + for size 1 fixes. + +2000-06-08 David O'Brien <obrien@FreeBSD.org> + + * configure.in (VERSION): Update to show this is the CVS mainline. + +2000-06-08 Matthew Jacob <mjacob@feral.com> + + * config/tc-alpha.c (md_undefined_symbol): Properly understand that + $at is the integer register $r28, vs. both $r28 and the floating + point register $f28. + +2000-06-08 James E. Wilson <wilson@cygnus.com> + + * config/tc-ia64.c (generate_unwind_image): Call ia64_flush_insns. + (dot_endp): Don't call ia64_flush_insns. + (emit_one_bundle): Don't delete prologue/body records from + unwind_record list in first loop. Rewrite second loop to account for + this. + +2000-06-07 David Mosberger <davidm@hpl.hp.com> + + * config/tc-ia64.c: Add missing prototypes. + (generate_unwind_image): Cast argument to output_unw_records call. + +2000-06-07 Denis Chertykov <denisc@overta.ru> + + * config/tc-avr.c (avr_operand): fix the formatting of the comment. + +2000-06-07 Denis Chertykov <denisc@overta.ru> + + * config/tc-avr.c (AVR_ISA_???): moved to include/opcode/avr.h + (REGISTER_P): likewise. + (avr_opcodes): uses include/opcode/avr.h + (avr_operand): enable ld r,Z or st r,Z for at90s1200. + +2000-06-04 Alan Modra <alan@linuxcare.com.au> + + * read.c (is_end_of_line): No ';' for TC_HPPA. Add missing + initializers too. + +2000-06-03 H.J. Lu <hjl@gnu.org> + + * read.c (is_end_of_line): Put back `;'. + +2000-06-03 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (md_shortopts): Remove 'm', add 'q' to non-elf. + +2000-06-01 Alan Modra <alan@linuxcare.com.au> + + * expr.c (operand): Test is_end_of_line outside switch to catch + line separator chars that are also operators. + (operator): Return O_illegal for line separator chars. + + * read.c (is_end_of_line): Use 1 instead of 99. Don't set `;' + entry (or `!' entry for TC_HPPA). + + * config/tc-arm.c (my_get_float_expression): Cast to unsigned char + before indexing is_end_of_line. Remove redundant check for '\0'. + (fp_op2): Likewise. + * config/tc-h8500.c (md_assemble): Likewise. + * config/tc-mcore.c (md_assemble): Likewise. + * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. + (md_atof): Likewise + + * config/tc-m88k.c (s_bss): Cast to unsigned char before indexing + is_end_of_line. + * config/tc-mcore.c (mcore_cons): Likewise. + (mcore_float_cons): Likewise. + (mcore_stringer): Likewise. + * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. + +2000-06-01 Scott Bambrough <scottb@netwinder.org> + + * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly. + +2000-05-29 Nick Clifton <nickc@cygnus.com> + + * config/tc-sh.c: Fix compile time warning messages. + + * config/tc-mips.c: Fix compile time warning messages. + +2000-05-29 Philip Blundell <philb@gnu.org> + + * doc/as.texinfo: Update copyright dates. + (Local Labels): Delete misplaced mention of ARM. + * NEWS: Mention ARM ELF support. + +2000-05-27 Alexandre Oliva <aoliva@cygnus.com> + + * config/tc-mn10300.c (md_assemble): Copy size to real_size before + it is modified, and use the real_size to compute the frag address + for dwarf2 line info. + +2000-05-27 Alan Modra <alan@linuxcare.com.au> + + * Makefile.am (DEP, DEP1, dep, dep-in, dep-am): Use a better sed + line-matching scheme to cope with automake moving variables around. + ($(TARG_CPU_O)): Remove dependency on TARG_CPU_DEP_@target_cpu_type@ + * Makefile.in: Regenerate. + +2000-05-26 Jakub Jelinek <jakub@redhat.com> + + * config/tc-sparc.c (sparc_relax): New. + (md_longopts): Add -relax and -no-relax options. + (md_parse_options, md_show_usage): Likewise. + (md_apply_fix3): Optimize tail call into branch always if possible. + +2000-05-04 Donald Lindsay <dlindsay@cygnus.com> + + * config/tc-d10v.c (write_2_short, parallel_ok, md_assemble, + d10v_cleanup) implement Mitsubishi's newly explained branch-packing + rules, with warning when a GAS statement specifies a packing that + will result in an instruction being squashed. + Added typdef packing_type and enumerals, changed various integer + literals to use the enumerals. + +2000-05-24 David Mosberger <davidm@hpl.hp.com> + + * config/tc-ia64.c (dot_restorereg_p): New function. + (md_pseudo_table): Add restorereg.p. + (output_X3_format): Fix typo: record type should be UNW_X3, not UNW_X1. + (output_X4_format): Fix typo: record type should be UNW_X4, not UNW_X2. + + * config/tc-ia64.h (unw_record_type): Add unwabi. + (unw_r_record): Rename member MASK to GRMASK. Add sub-structure + called MASK with members for imask, and the masks produced by + fr_mem, gr_mem, br_mem, and frgr_mem. + (unw_p_record): Add members ABI and CONTEXT. + (unw_x_record): Add member AB. + * config/tc-ia64.c (enum reg_symbol): Add REG_PSP and REG_PRIUNAT + as pseudo-register for use during unwind info generation. + (AR_PFS, AR_LC): New macros. + (enum pseudo_type): Add PSEUDO_FUNC_REG to permit declaring registers + whose names start with an at sign (as in "@priunat"). + (pseudo_func): Add "svr4", "hpux", "nt" constants and "priunat" + register. + (unwind_list, unwind_tail, current_unwind_entry, proc_start, + proc_end, unwind_info, personality_routine): Consolidate into + "unwind" structure to reduce offset-table use. Add member + NEXT_SLOT_NUMBER to track the slot number for the next instruction + to be emitted. + (output_R1_format, output_R3_format, output_P3_format, + output_P6_format): Initialize R with zero to reduce compiler warnings. + (output_P7_format): Ditto. Add `default' branch to switch + statement to reduce compiler warnings. + (output_P8_format, output_B1_format, output_B4_format): Ditto. + (output_P4_format): Rename 2nd & 3rd arg to IMASK and IMASK_SIZE. + (format_ab_reg): Rename from format_a_b_reg. Merge A and B args + into single argument. + (output_X1_format, output_X3_format): Initialize R with zero to reduce + compiler warnings. Merge A and B args into single argument. + (output_X2_format, output_X4_format): Remove unused variable R. Merge + A and B args into single argument. + (free_record): Removed (wasn't used). + (free_list_records): Also free imasks in prologue records. + (output_prologue, output_prologue_gr): Initialize mask bits to zero. + (output_spill_mask): Remove. + (output_unwabi): New function. + (output_epilogue, output_label_state, output_copy_state): Call + alloc_record. + (output_spill_psprel, output_spill_sprel, output_spill_psprel_p, + output_spill_sprel_p, output_spill_reg, output_spill_reg_p): Add AB + argument. + (process_one_record): New locals FR_MASK and GR_MASK. Ignore + gr_mem, fr_mem, br_mem, and frgr_mem records and instead emit them + as part of handling the prologue records. Emit region's imask if + we have one. Handle unwabi, epilogue, label_state, copy_state, + spill_psprel, spill_sprel, spill_reg, spill_psprel_p, + spill_sprel_p, and spill_reg_p records. + (set_imask, count_bits, slot_index): New function. + (fixup_unw_records): Fix region size computation. Handle + epilogue, spill_reg, spill_sprel, spill_psprel, spill_reg_p, + spill_sprel_p, and spill_psprel_p records. Merge mask bits of + frgr_mem, fr_mem, gr_mem, br_mem on a per-region basis and + set_imask accordingly. Update imask for gr_gr, and br_gr records. + (convert_expr_to_ab_reg, convert_expr_to_xy_reg): New function. + (dot_save): Use manifest constants for applicaton registers. + Handle REG_PR and REG_PRIUNAT. + (dot_restore): Don't just ignore it. + (dot_restorereg): New function.. + (generate_unwind_image): Ensure unwind info is a multiple of eight + bytes, not just four bytes. + (dot_handlerdata, dot_unwentry): Demand empty rest of line. + (dot_altrp): Don't just ignore it. + (dot_savemem): New function. Replaces dot_savesp() and + dot_savepsp(). Use manifest constants for applicaton registers. + Handle REG_PR and REG_PRIUNAT. + (dot_savef): Simplify. + (dot_saveb): Support generation of br_gr. + (dot_spillreg, dot_spillmem, dot_spillreg_p, dot_spillmem_p, + dot_label_state, dot_copy_state): New function. + (dot_unwabi): Don't just ignore it. + (md_pseudo_table): Add restorereg, spillreg, spillsp, spillpsp, + spillreg.p, spillsp.p, spillpsp, label_state, copy_state, + unwabi, vframesp, and vframepsp. Fix typo alprp->altrp. + (emit_one_bundle): Set slot number for prologue/body records + *before* emitting the first insn. + (emit_one_bundle): Set UNWIND.NEXT_SLOT_NUMBER. + (md_begin): Declare "psp" pseudo-register. + (md_operand): Handle PSEUDO_FUNC_REG. Fix printing of error message + so we don't get segfault. + (output_psp_sprel): Output sp/psp relative offsets as 4-byte word + counts as required per SW Conventions manual + (output_rp_psprel, output_rp_sprel, output_pfs_psprel,output_pfs_sprel, + output_preds_psprel, output_preds_sprel, output_spill_base, + output_unat_psprel, output_unat_sprel, output_lc_psprel, + output_lc_sprel, output_fpsr_psprel, output_fpsr_sprel, + output_priunat_psprel, output_priunat_sprel, output_bsp_psprel, + output_bsp_sprel, output_bspstore_psprel, output_bspstore_sprel, + output_rnat_psprel, output_rnat_sprel, output_spill_psprel, + output_spill_sprel, output_spill_psprel_p, output_spill_sprel_p):Ditto. + (dot_vframe): Implement. + (dot_vframesp, dot_vframepsp): New function. + +2000-05-23 Hans-Peter Nilsson <hp@axis.com> + + * configure.in (i386-*-freebsd a.out entry): Quote properly. + * configure: Regenerate. + +2000-05-23 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (md_assemble): Pass jump reloc in fr_var... + (md_estimate_size_before_relax): so we can use it here instead of + old kludges. Localise vars to blocks. Comment. + + * frags.c (frag_new): Update fr_var comments. + * frags.h (struct frag): Ditto. + +2000-05-22 Richard Henderson <rth@cygnus.com> + + * config/tc-ia64.c (FUNC_PC_RELATIVE): New. + (pseudo_func): Add pcrel. + (operand_match): Handle IA64_OPND_TGT64. + (build_insn): Likewise. + (md_begin): Initialize pseudo_func[FUNC_PC_RELATIVE]. + (ia64_gen_real_reloc_type): Handle FUNC_PC_RELATIVE. + (fix_insn): Handle all three 64-bit relocation types. + +2000-05-22 Hans-Peter Nilsson <hp@axis.com> + + * obj.h (struct format_ops): New members begin, app_file, + s_set_other, s_set_desc, s_get_type, s_set_type, + separate_stab_sections, init_stab_section. + + * config/obj-multi.h: Update GPL notice to v2. + (obj_begin): New. + (obj_app_file): New. + (S_SET_SIZE): Test s_set_size for NULL before calling. + (S_SET_ALIGN): Similar for s_set_align. + (S_SET_OTHER): New. + (S_SET_DESC): New. + (S_GET_TYPE): New. + (S_SET_TYPE): New. + (SEPARATE_STAB_SECTIONS): New. + (INIT_STAB_SECTION): New. + (EMIT_SECTION_SYMBOLS): New. + (AOUT_STABS) [OBJ_MAYBE_AOUT]: Define. + + * config/obj-elf.h: Update GPL notice to v2. + Mention that this file is included from obj-multi.h. + (obj_begin): Wrap definition in ifndef. + (elf_file_symbol): Constify declaration. + (obj_app_file): Ditto. + (SEPARATE_STAB_SECTIONS, INIT_STAB_SECTION, OBJ_PROCESS_STAB): + Wrap in ifndef SEPARATE_STAB_SECTIONS. + + * config/obj-elf.c (elf_s_set_other): New. + (elf_file_symbol): Constify argument. + (elf_separate_stab_sections): New. + (elf_init_stab_section): New. + (elf_format_ops): Add new members. Remove comma at end. + + * config/obj-ecoff.c (ecoff_separate_stab_sections): New. + (ecoff_format_ops): Add new fields. Remove comma at end. + Mention inconsistency for emit_section_symbols. + + * config/obj-coff.h (c_dot_file_symbol): Constify declaration. + + * config/obj-coff.c (c_dot_file_symbol): Constify argument. + (coff_separate_stab_sections): New. + (coff_format_ops): Add new members. + + * config/obj-aout.c (obj_aout_sec_sym_ok_for_reloc): New. + (obj_aout_s_set_other): New. + (obj_aout_s_set_desc): New. + (obj_aout_s_get_type): New. + (obj_aout_s_set_type): New. + (obj_aout_separate_stab_sections): New. + (aout_format_ops): New members added. Use obj_aout_process_stab, + not 0. Use obj_aout_sec_sym_ok_for_reloc, not 0. + (obj_aout_frob_symbol): Add ATTRIBUTE_UNUSED to args as + appropriate. + (obj_aout_line, obj_aout_weak, obj_aout_type): Ditto. + +2000-05-22 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (tc_i386_fix_adjustable): Prevent adjustment + for OBJ_MAYBE_ELF too. Use S_IS_EXTERNAL instead of S_IS_EXTERN. + (md_estimate_size_before_relax): Ensure jumps to weak and + externally visible symbols are relocatable. + +2000-05-20 Hans-Peter Nilsson <hp@axis.com> + + * stabs.c (aout_process_stab): Make global. + (s_desc): Add ATTRIBUTE_UNUSED to args as appropriate. + * read.h (aout_process_stab): Declare. + + * configure.in (EMULATIONS) [i386aout, i386coff, i386elf]: + Generalize to *aout, *coff *elf. + * configure: Regenerated. + + * doc/internals.texi (Object format backend): Say + SEPARATE_STAB_SECTIONS needs to be nonzero, not just defined. + + * Makefile.am (TARG_ENV_HFILES): Delete te-multi.h. + * Makefile.in: Regenerated. + +2000-05-19 Catherine Moore <clm@cygnus.com> + + * cgen.h (GAS_CGEN_MAX_FIXUPS): Check if already defined. + +2000-05-18 Alan Modra <alan@linuxcare.com.au> + + * config/tc-hppa.c (md_apply_fix): Mask out immediate bits of + instruction to reflect change in re_assemble_*. + +2000-05-18 Jeffrey A Law (law@cygnus.com) + + * configure.in (hppa-*-hpux11*): If the cpu is hppa*64*, then + build PA64 ELF tools. + * configure: Rebuilt. + +2000-05-17 Alan Modra <alan@linuxcare.com.au> + + * Makefile.am: Regenerate dependencies. + * Makefile.in: Regenerate. + +2000-05-15 Nick Clifton <nickc@cygnus.com> + + * config/tc-arm.c (struct asm_psr): Add boolean field + distinguishing between CSPR and SPSR. Rename 'number' field + to 'field'. + (psrs): Rearrange contents to match new asm_psr structure. + (arm_psr_parse): Move next to psr_required_here. Make it + return an asm_psr structure. + (psr_required_here): Use asm_psr structure returned by + arm_psr_parse. + (do_msr): Reorganise to allow psr_required_here to be called + only once. + (md_undefined_name): Mark 'name' parameter as unused, since + the COFF target does not use it. + +2000-05-14 David O'Brien <obrien@FreeBSD.org> + + * config/te-386bsd.h: Clean up comments to adhere to the GNU coding + standards. + * config/te-aux.h: Likewise. + * config/te-dpx2.h: Likewise. + * config/te-go32.h: Likewise. + * config/te-hp300.h: Likewise. + * config/te-hppa.h: Likewise. + * config/te-i386aix.h: Likewise. + * config/te-ic960.h: Likewise. + * config/te-interix.h: Likewise. + * config/te-nbsd532.h: Likewise. + * config/te-pc532mach.h: Likewise. + * config/te-ppcnw.h: Likewise. + * config/te-psos.h: Likewise. + * config/te-sparcaout.h: Likewise. + * config/te-sun3.h: Likewise. + * config/te-sysv32.h: Likewise. + +2000-05-14 Alan Modra <alan@linuxcare.com.au> + + * config/tc-h8300.c (do_a_fix_imm): Don't rely on `short' being 16 + bits. Instead explicitly mask and sign extend. Do the 8 bit mask + and sign extend without an if statement. + (build_bytes): Likewise. + +2000-05-14 Kazu Hirata <kazu@hxi.com> + + * config/tc-h8300.c (do_a_fix_imm): Output a reloc for no + X_add_symbol L_32 case. + +2000-05-14 David O'Brien <obrien@FreeBSD.org> + + * config/te-freebsd.h: New file. + +2000-05-13 Alan Modra <alan@linuxcare.com.au> + + * asintl.h (gettext, dgettext, dcgettext, textdomain, + bindtextdomain): Replace defines with those from intl/libgettext.h + to quieten gcc warnings. + + * NEWS: Mention x86 .arch and -q. + + * config/tc-i386.c (quiet_warnings): New. + (md_assemble): Use quiet_warnings. + (md_parse_option): Set quiet_warnings from -q. + (md_show_usage): Mention -q, delete -m. + (flag_do_long_jump): Delete. + (md_parse_option): Remove -m. + (md_show_usage): Remove -m. + (md_create_long_jump): Remove useless flag_do_long_jump code. + + * as.c (parse_args): In case OPTION_DEFSYM, use a valueT to hold + the symbol value, and use bfd_scan_vma if BFD_ASSEMBLER. + +2000-05-13 Alan Modra <alan@linuxcare.com.au> + Alexander Sokolov <robocop@netlink.ru> + + * doc/c-i386.texi (i386-Arch): New section. + (i386-Syntax): Mention .intel_syntax and .att_syntax. + + * config/tc-i386.c (cpu_arch_name, cpu_arch_flags): New. + (smallest_imm_type): Use smallest opcode for shift by one if cpu + architecture has been given and is not 486. + (set_cpu_arch): New. + (md_pseudo_table): Add .arch. + (md_assemble): Warn if cpu architecture has been given and an + unsupported instruction. + + * config/tc-i386.h (SMALLEST_DISP_TYPE): Delete. + Move operand_types bit defines after relevant template field. + (template): Add cpu_flags. + (Cpu*): Define. + (arch_entry): New. + +2000-05-12 Alexandre Oliva <aoliva@cygnus.com> + + * config/tc-mn10300.h (md_end): Define. + (mn10300_finalize): Declare. + * config/tc-mn10300.c: Include dwarf2dbg.h. + (debug_line): Define. + (md_assemble): Generate dwarf2 line info. + (mn10300_finalize): New function. Finalize dwarf2 info. + +2000-05-11 Ulf Carlsson <ulfc@engr.sgi.com> + + * config/tc-mips.c (md_estimate_size_before_relax): Use the + external version of the relocation for weak symbols. + +2000-05-08 David Mosberger <davidm@hpl.hp.com> + + * config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed + frame size in units of 16 bytes, as required per SW Conventions manual. + (output_unw_records): Output info-block header as a dword to get + byte-order right. + +2000-05-08 Alan Modra <alan@linuxcare.com.au> + + * as.h: #include "file", not <file> on files from ../include. + (as_abort, as_fatal): Add ATTRIBUTE_NORETURN. + * config/tc-m68k.c (m68k_ip): Fix signed/unsigned warnings. + (md_convert_frag): Add ATTRIBUTE_UNUSED. + (tc_coff_symbol_emit_hook): Ditto. + (OPTCOUNT): Cast to int to avoid compiler warning. + (md_begin): Fix signed/unsigned warnings. + +2000-05-08 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * config/tc-m68k.c (md_convert_frag_1): Abort if we end up in the + ABRANCH LONG case for a conditional branch on a 68000. + (md_estimate_size_before_relax): Likewise. Also handle + flag_short_refs correctly for ABRANCH, BCC68000, and DBCC. + (m68k-ip: case ABSL): Relax absolute references to 16-bit + PC-relative on all CPUs. + (md_estimate_size_before_relax): Likewise. + +2000-05-04 Alan Modra <alan@linuxcare.com.au> + + * as.c (parse_args): Just mention current year in printed + copyright message. + +2000-05-03 J.T. Conklin <jtc@redback.com> + + * config/tc-ppc.c (pre_defined_registers): Add entries for vector + unit registers. + (md_parse_option): Recognize -m7400. + +2000-05-03 Ian Lance Taylor <ian@zembu.com> + + * config/atof-ieee.c (gen_to_words): When adding carry back in, + don't permit lp to become less than the words array. + +2000-05-03 Rodney Brown <RodneyBrown@pmsc.com> + + config/tc-mcore.c (md_apply_fix3): BFD_RELOC_MCORE_PCREL_IMM11BY2 + Fix little-endian case. + +2000-05-03 David O'Brien <obrien@NUXI.com> + + * as.c (parse_args): Update copyright. + +2000-05-03 Mark Elbrecht <snowball3@bigfoot.com> + + * config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 + for the .bss section too. + +2000-05-02 Alan Modra <alan@linuxcare.com.au> + + * configure.in: Set em=linux for hppa-*-linux. + * configure: Regenerate. + * doc/Makefile.in: Regenerate with correct automake. + + * frags.c (frag_grow): Sanity check chunk_size. + + * config/obj-elf.h: #include "bfd.h" not <bfd.h> + * config/obj-som.h: Likewise. + * config/obj-ieee.h: Likewise. + + * config/tc-hppa.h: Test BFD_ARCH_SIZE, not BFD64. + + * config/tc-hppa.c (log2): Only compile when OBJ_SOM. + (md_pseudo_table): Fully initialise OBJ_ELF cases. + (fix_new_hppa): Add ATTRIBUTE_UNUSED to args as appropriate. + (pa_ip): low_sign_unext now returns via function value. Use + re_assemble_* instead of dis_assemble_* and + INSERT_FIELD_AND_CONTINUE combination. Don't call sign_unext + unnecessarily. + (md_convert_frag): Add ATTRIBUTE_UNUSED to args as appropriate. + (md_section_align, md_parse_option, md_show_usage, + md_undefined_symbol, pa_align, pa_block, pa_brtab, pa_try, + pa_callinfo, pa_code, pa_comm, pa_end, pa_enter, pa_entry, + pa_exit, pa_export, pa_import, pa_label, pa_leave, pa_level, + pa_origin, pa_param, pa_proc, pa_procend, pa_space, pa_spnum, + pa_version, pa_compiler, pa_copyright, pa_data, pa_fill, pa_lsym, + pa_text): Likewise. + (md_apply_fix): Change type of new_val to offsetT. Delete w1, w2, + w, resulti. Add insn, val. Move bfd_get_32 and bfd_put_32 + outside of switch. Correct mask and shifting errors in case 10 + and case -11. In case 21, compare against signed range to suit + hppa_field_adjust changes. In case 12, use re_assemble_12. In + case 17 and case 22, use offsetT variable to properly check range. + Use re_assemble_* here too. + (evaluate_absolute): Change type of value to offsetT. Call + hppa_field_adjust to do the work for us. + (pa_parse_cmpb_64_cmpltr): Delete save_s. + (pa_parse_cmpib_64_cmpltr): Ditto. + (pa_build_unwind_subspace): Delete unused var subseg. Change type + of i to unsigned int. + (pa_type_args): Conditionally declare symbol if OBJ_SOM. + (pa_end_of_source): Return type is void. + +2000-05-01 Catherine Moore <clm@cygnus.com> + + * macro.c (macro_expand_body): Don't prepend macro number with zeroes. + +2000-05-01 Denis Chertykov <denisc@overta.ru> + + * config/tc-avr.c: ATTRIBUTE_UNUSED added to the necessary places. + More comments added. + (md_begin): Removed "construct symbols for each register name". + Because register names conflicts with GCC generated function + names. + (avr_operand): Now constant numbers can be used as a register + identifiers (0 as r0, 31 as r31). + (md_assemble): use skip_space () before parsing instruction + operands. + +2000-05-01 Alan Modra <alan@linuxcare.com.au> + + * configure.in: Set bfd_gas=yes on i386-*-pe and i386-*-nt* to + ensure all pe targets use bfd. Remove unnecessary bfd_gas=yes on + arm-*-netbsd* and arm-*-wince as this is set for all arm*. + * configure: Regenerate. + +2000-04-29 Andreas Jaeger <aj@suse.de> + + * as.h: Correctly check GCC version. + +2000-04-26 David O'Brien <obrien@FreeBSD.org> + + * doc/as.1: Fix unbalanced brackets. + + * config/tc-i386.c (comment_chars): Don't use '/' as comment start if + TE_FreeBSD. + (line_comment_chars): Set to '/' if TE_FreeBSD. + +2000-04-25 Jeffrey A Law (law@cygnus.com) + + * configure.in: Configury support for PA64 (currently disabled). + * configure: Rebuilt. + +2000-04-25 Machida Hiroyuki <machida@sm.sony.co.jp> + + * config/tc-mips.c (s_change_sec): Use record_alignment, not + bfd_set_section_alignment. + +2000-04-25 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (offset_in_range): Ensure shift counts are less + than 32. + +2000-04-24 Nick Clifton <nickc@cygnus.com> + + * doc/c-arm.texi (ARM Directives): Document behaviour of .align 0. + * doc/as.texinfo (Align): Include arm and strongarm in list of + targets that have the second form of the behaviour of the .align + directive. + +2000-04-24 Mark Klein <mklein@dis.com> + + * config/obj-som.c: Terminate obj_pseudo_table. + +2000-04-24 Clinton Popetz <cpopetz@cygnus.com> + + * as.c (parse_args): Allow md_parse_option to override -a listing + option. + * config/obj-coff.c (add_lineno): Change type of offset parameter + from "int" to "bfd_vma." + * config/tc-ppc.c (md_pseudo_table): Add "llong" and "machine." + (ppc_mach, ppc_subseg_align, ppc_target_format): New. + (ppc_change_csect): Align correctly for XCOFF64. + (ppc_machine): New function, which discards "ppc_machine" line. + (ppc_tc): Cons for 8 when code is 64 bit. + (md_apply_fix3): Don't check operand->insert. Handle 64 bit + relocations. + (md_parse_option): Handle -a64 and -a32. + (ppc_xcoff64): New. + * config/tc-ppc.h (TARGET_MACH): Define. + (TARGET_FORMAT): Move to function. + (SUB_SEGMENT_ALIGN): Use ppc_subseg_align. + +2000-04-23 Denis Chertykov <denisc@overta.ru> + + * config/tc-avr.c: New AVR_ISA_ defined. + (md_assemble): Handle opcodes with optional operands (lpm,elpm). + (avr_operand): Handle 'a', 'v' and 'z' constraint letters needed + for `fmul', `movw' and `lpm R,Z' instructions. + (avr_operands): Warn if current opcode is a two-word instruction + and previous opcode was cpse/sbic/sbis/sbrc/sbrs. + (avr_opcodes): New commands added. + (REGISTER_P): Check 'a' and 'v' constraint letters. + (mcu_types): New MCU added. + +2000-04-22 Timothy Wall <twall@cygnus.com> + + * config/tc-ia64.c (pseudo_func[]): Add new "nat" entry equivalent + to "natval". + (operand_match): Conditionally insert default bit values for IMMU9. + +2000-04-14 Matthew Green <mrg@cygnus.com> + + * configure.in: Add NetBSD/sparc ELF and NetBSD/sparc64 support. + * configure: Rebuilt. + +2000-04-21 Jeffrey A Law (law@cygnus.com) + Jason Eckhardt <jle@cygnus.com> + + * config/tc-hppa.c (md_apply_fix): Handle new PA2.0 formats. + + * config/tc-hppa.c (CHECK_ALIGN): New macro. + Added handling of new operand types l,y,&,fe,fE,fx. + +2000-04-21 Richard Henderson <rth@cygnus.com> + David Mosberger <davidm@hpl.hp.com> + Timothy Wall <twall@cygnus.com> + Andrew MacLeod <amacleod@cygnus.com> + Jim Wilson <wilson@cygnus.com> + + * Makefile.am (CPU_TYPES): Add ia64. + (TARGET_CPU_CFILES): Add config/tc-ia64.c. + (TARGET_CPU_HFILES): Add config/tc-ia64.h. + * Makefile.in: Rebuild. + * app.c (do_scrub_chars): Handle DOUBLESLASH_COMMENTS. + * configure: Rebuild. + * configure.in: Recognize ia64 as cpu type. Set bfd_gas. + (ia64-*-elf*, ia64-*-linux-gnu*): New targets. + * expr.c (expr): Handle md_optimize_expr. + * read.c (LEX_HASH): Add comment. + * config/tc-ia64.c, config/tc-ia64.h: New files. + +2000-04-21 Richard Henderson <rth@cygnus.com> + + * config/tc-d30v.c (write_2_short): Disregard opcode1->ecc when + bundling a non-delayed branch type instruction. + +2000-04-20 Alexandre Oliva <aoliva@cygnus.com> + + * config/tc-mn10300.c (HAVE_AM30): Define. + (md_assemble): Use it. + +2000-04-19 Alan Modra <alan@linuxcare.com.au> + + * config/obj-elf.c (obj_elf_change_section): Check for changed + section attributes. + + * Makefile.am: (CPU_MULTI_VALID): Remove. + (MULTI_CPU_TYPES): Define. + (MULTI_CPU_OBJ_VALID): Define. + (DEPTC): Use the above. + (DEPOBJ): Same here. + (DEP2): And here. + Regenerate dependencies. + * Makefile.in: Regenerate. + +2000-04-19 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * Makefile.am (YACC, LEX): Get them from configure. + +2000-04-18 H.J. Lu (hjl@gnu.org) + + * config/tc-i386.c (offset_in_range): Use addressT instead of + bfd_vma for non-bfd assemblers. + +2000-04-17 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (offset_in_range): Sign extend val so BFD64 + doesn't give spurious errors. + +2000-04-14 Michael Sokolov <msokolov@ivan.Harhan.ORG> + + * as.h (SEEK_SET): Define if undefined. + +2000-04-13 Alan Modra <alan@linuxcare.com.au> + + * config/tc-arm.c (md_apply_fix3): Don't use UL suffix on + constants, and don't assume offsetT is 32 bits. + +2000-04-12 Andrew Cagney <cagney@b1.cygnus.com> + + * config/tc-d10v.h: Include "write.h" to get definition of fixS. + (md_pcrel_from_section): Add prototype. + (d10v_fix_adjustable): Add prototype. + (d10v_force_relocation): Replace 'struct fix' with 'fixS'. + + * config/tc-d10v.c (md_apply_fix3): Add paren around &&. + +2000-04-12 Nick Clifton <nickc@cygnus.com> + + * config/tc-d10v.c (find_opcode): Correctly calculate position of + symbol in frag chain. + +2000-04-10 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (fits_in_signed_byte): Change arg to offsetT. + (fits_in_unsigned_byte, fits_in_unsigned_word): Ditto. + (fits_in_signed_word, smallest_imm_type): Ditto. + (md_assemble): Use an offsetT var to hold offsetT values, not a + long. + (offset_in_range): New. + (md_assemble): Use it. + (md_convert_frag): Change type of target_address, opcode_address, + and displacement_from_opcode_start to offsetT. + (md_create_short_jump): Change type of offset to offsetT. + (md_create_long_jump): Ditto. + (md_apply_fix3): Use -4, not 0xfffffffc for BFD_RELOC_386_PLT32. + (md_chars_to_number): Remove. + (output_invalid): Remove duplicate prototype. + +2000-04-09 Nick Clifton <nickc@cygnus.com> + + * Makefile.am (CPU_TYPES): Add 'avr'. + (TARGET_CPU_CFILES): Add 'tc-avr.c'. + (TARGET_CPU_HFILES): Add 'tc-avr.h'. + + * Makefile.in: Regenerate. + + * doc/as.texinfo: Add M32R documentation. + +2000-04-07 Andrew Cagney <cagney@b1.cygnus.com> + + * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add + --enable-build-warnings option. + * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions. + * Makefile.in, configure: Re-generate. + +2000-04-07 Nick Clifton <nickc@cygnus.com> + + * config/tc-arm.c (md_apply_fix3): Treat BFD_RELOC_ARM_PCREL_BLX + in the same way as BFD_RELOC_ARM_PCREL_BRANCH, and + BFD_RELOC_THUMB_PCREL_BLX lie BFD_RELOC_THUMB_PCREL_BRANCH. + (tc_gen_reloc): Accept BFD_RELOC_{ARM|THUMB}_PCREL_BLX. + (arm_force_relocation): Force relocations for + BFD_RELOC_{ARM|THUMB}_PCREL_BLX as well. + +2000-04-05 J"orn Rennecke <amylaar@cygnus.co.uk> + + * config/tc-sh.c (get_operands): There's no third operand if the + first operand is an immediate. + +2000-04-05 J"orn Rennecke <amylaar@cygnus.co.uk> + + * config/tc-sh.c (immediate): Delete. + (sh_operand_info): Add immediate member. + (parse_reg): Use A_PC for pc. + (parse_exp): Add second argument 'op'. All callers changed. + (parse_at): Expect pc to be coded as A_PC. + Use immediate field in *op. + (insert): Add fourth argument 'op'. All callers changed. + (build_relax): Add second argument 'op'. All callers changed. + (insert_loop_bounds): New function. + (build_Mytes): Remove DISP_4. + Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT. + (assemble_ppi): Use immediate field in *operand. + (sh_force_relocation): Handle BFD_RELOC_SH_LOOP_{START,END}. + (md_apply_fix): Likewise. + (tc_gen_reloc): Likewise. Check for a pcrel BFD_RELOC_SH_LABEL. + +2000-04-05 Alexandre Oliva <oliva@lsd.ic.unicamp.br> + + * config/tc-sparc.c (sparc_ip): Avoid string pasting. + +2000-04-04 Hans-Peter Nilsson <hp@axis.com> + + * internals.texi (CPU backend): Document + TC_CHECK_ADJUSTED_BROKEN_DOT_WORD. + +2000-04-04 Alan Modra <alan@linuxcare.com.au> + + * po/gas.pot: Regenerate. + + * as.c (show_usage): Restore translated part of bug string. + * gasp.c (show_usage): Likewise. + + * Makefile.am (MKDEP): Use gcc -MM rather than ../mkdep. + (DEP): Quote when passing vars to sub-make. Use "mv -f" rather + than move-if-change. + (DEP1): Modify for "gcc -MM". + (DEPTC): Likewise. + (DEPOBJ): Likewise. + (DEP2): Likewise. + (CLEANFILES): Add DEPTCA, DEPOBJA, DEP2a, DEPA. + Update dependencies. + * Makefile.in: Regenerate. + +2000-04-03 Alexandre Oliva <aoliva@cygnus.com> + + * config/tc-mn10300.c (md_pseudo_table): Use constant names. + (md_begin): Likewise. + (HAVE_AM33): New macro. + (md_assemble): Use it. Match r_regs and xr_regs only if + HAVE_AM33. + +2000-04-03 Alan Modra <alan@linuxcare.com.au> + + * as.h: #include "bin-bugs.h" + * as.c (show_usage): Use REPORT_BUGS_TO. + * gasp.c: #include "bin-bugs.h" + (show_usage): Use REPORT_BUGS_TO. + + * config/tc-sparc.c (md_show_usage): Add a trailing newline. + +2000-04-03 Hans-Peter Nilsson <hp@axis.com> + + * write.c (write_object_file) [! WORKING_DOT_WORD]: If defined, + call TC_CHECK_ADJUSTED_BROKEN_DOT_WORD for each word after + adjustments. + +2000-04-03 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c (i386_immediate): Don't assume a constant + immediate is necessarily 16 bits when in 16 bit code mode. + (md_assemble): Instead set guess_suffix here after we have checked + registers. + +2000-04-02 Richard Henderson <rth@cygnus.com> + + * config/tc-d30v.c (check_range): Allow signed or unsigned 32-bit + quantities. Correct right shift sign extension. + (build_insn): Make `number' unsigned long. Mask top 6 bits of + 32-bit value when shifting into place. + +2000-04-01 Ian Lance Taylor <ian@zembu.com> + + * app.c: Add ATTRIBUTE_UNUSED as needed. + * config/tc-ppc.c: Likewise. + (ppc_size): Make unsigned long. + (ppc_insert_operand): Add casts to avoid warnings. + +2000-03-31 Nick Clifton <nickc@cygnus.com> + + * config/tc-d10v.h (md_flush_pending_output): Define. + +2000-03-29 Nick Clifton <nickc@cygnus.com> + + * config/tc-sh.h (SEG_NAME): New macro: return the name of a + segment. Works for both BFD_ASSEMBLER and others. + (SUB_SEGMENT_ALIGN): Use SEG_NAME. + +2000-03-29 Nick Clifton <nickc@cygnus.com + + * config/tc-arm.c (tinsns): Add "bal" instruction pattern. + +2000-03-28 Alan Modra <alan@linuxcare.com.au> + + * listing.c (LISTING_LHS_WIDTH): Default depends on + LISTING_WORD_SIZE. + (LISTING_LHS_WIDTH_SECOND): Default to LISTING_LHS_WIDTH. + +2000-03-27 Ian Lance Taylor <ian@zembu.com> + + * config/tc-sh.c (md_show_usage): Use backslash before newline in + string literal. + +2000-03-27 Alan Modra <alan@linuxcare.com.au> + + * config/tc-avr.h (TC_HANDLES_FX_DONE): Define. + + * config/tc-avr.c (mcu_types): Add missing initialiser. + (md_pcrel_from_section): Add prototype. + (avr_operand): Remove redundant test of unsigned < 0. + (avr_cons_fix_new): Ensure exp_mod_pm zero on function exit. + +2000-03-27 Denis Chertykov <denisc@overta.ru> + + * config/tc-avr.c: New file for AVR support. + * config/tc-avr.h: Likewise. + * configure.in: Add AVR support. + * configure: Regenerate. + +2000-03-26 Timothy Wall <twall@cygnus.com> + + * gasp.c (macro_op): Add new argument to check_macro call. + Macro structure definitions moved to macro.h + * sb.h: Add argument to prototype for input_scrub_include_sb. + * input-scrub.c (input_scrub_include_sb): Allow disabling of sb + nesting checks with an additional flag. + (struct input_save): Add flag to indicate whether current sb + should be checked for proper macro/conditional nesting. + (input_scrub_push/pop): Save/restore nest check flag. + (input_scrub_next_buffer): Ditto. Also call end of macro hook if + defined. + * macro.c (check_macro): Allow caller to retrieve parsed macro + information if a pointer is provided. This information may be + used by the new macro hooks. + * macro.h: Update prototype for check_macro. Macro struct + definitions moved here from macro.c/gasp.c. + * read.c (read_a_source_file): Add parameter to check_macro call, + and pass macro info to the macro hook, if defined. + (input_scrub_insert_line): New. Allow insertion of a line of + characters into the input stream. + (input_scrub_insert_file): New. Allow insertion of an arbitrary + file into the input stream. + (s_include): Use input_scrub_insert_file. + * internals.texi: Document new macro hooks. + * as.h: New prototypes added. + +2000-03-26 Alan Modra <alan@linuxcare.com.au> + + * config/tc-i386.c: Don't start any as_bad or as_warn message with + an initial capital letter. + (i386_index_check): Reindent. + +2000-03-19 Nick Clifton <nickc@cygnus.com> + + * config/tc-arm.c (md_apply_fix3): Fix bug detecting overflow of pc + relative branches. + +2000-03-17 Thomas de Lellis <tdel@windriver.com> + + * config/tc-arm.c (do_t_adr): Flag "adr Rd,label" + instruction operand bad if Rd > 7 when generating + thumb instructions. Prevents for example, + "adr r12,label" from silently failing and generating + the wrong instruction. + +2000-03-17 Nick Clifton <nickc@cygnus.com> + + * config/tc-arm.c (md_apply_fix3): Handle same-section relocations + that have a destingation >= 0x400000. + Fix compile time warning messages. + +2000-03-16 J"orn Rennecke <amylaar@cygnus.co.uk> + + * config/tc-sh.c (md_begin): When encountering insn that are + not supported by the current arch, only change the name if + its contents are the same as prev_name. + (get_specific): If the the architecture doesn't match, fail. + +2000-03-16 J"orn Rennecke <amylaar@cygnus.co.uk> + + * config/tc-sh.c (IDENT_CHAR): Define. + (parse_reg): Use it instead of isalnum. Put r[0..7]_bank operand + matching back where it came from. + +2000-03-16 J"orn Rennecke <amylaar@cygnus.co.uk> + + * config/tc-sh.c (md_show_usage): Add description of -dsp. + +2000-03-15 Jonathan Larmour <jlarmour@redhat.co.uk> + + * config/tc-sh.c (parse_reg): Match r[0..7]_bank operands before + normal operands. + +2000-03-15 Kazu Hirata <kazu@hxi.com> + + * config/tc-h8300.c: Add ATTRIBUTE_UNUSED as appropriate. + +2000-03-13 Hans-Peter Nilsson <hp@axis.se> + + * expr.c (operand) [case 'f']: When testing if '0f' can start a + floating-point-number, make sure 'f' is in FLT_CHARS. + +2000-03-11 Hans-Peter Nilsson <hp@axis.se> + + * read.c (TC_IMPLICIT_LCOMM_ALIGNMENT): New default-definition. + (s_lcomm_internal): Use it. + * doc/internals.texi (CPU backend): Document it. + * config/obj-evax.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Set to 2**3 + bytes. + +2000-03-10 Geoffrey Keating <geoffk@cygnus.com> + + * config/tc-mips.c (mips_ip): Don't put stuff in .rodata + when embedded-pic. + + * config/tc-mips.c (SWITCH_TABLE): The ELF embedded-pic + implementation doesn't have special handling for switch + statements. + (macro_build): Allow for code in sections other than .text. + (macro): Likewise. + (mips_ip): Likewise. + (md_apply_fix): Do pc-relative relocation madness for MIPS ELF. + Don't perform relocs if we will be outputting them. + (tc_gen_reloc): For ELF, just use fx_addnumber for pc-relative + relocations. Allow BFD_RELOC_16_PCREL_S2 relocs when + embedded-pic. + +2000-03-09 Catherine Moore <clm@cygnus.com> + + * config/tc-m32r.c (m32r_fix_adjustable): Look up the + relocation type based on the entry in the fixup structure. + Put S_IS_EXTERN processing back in. + +2000-03-08 H.J. Lu (hjl@gnu.org) + + * Makefile.am (install-exec-tooldir): Depend on + install-exec-bindir for parallel make. + * Makefile.in: Regenerated. + +2000-03-06 Nick Clifton <nickc@cygnus.com> + + * config/tc-m32r.c (struct md_longopts): Add -m32r command line + switch. + (md_parse_option): Parse -m32r command line switch - disable m32rx + compatability. + (md_show_usage): Document new option. + + * doc/Makefile.am (CPU_DOCS): Add c-m32r.texi. + * doc/Makefile.in: Regenerate. + * doc/c-m32r.texi (M32R-Opts): Document new command line switch. + +2000-03-02 Michael Meissner <meissner@redhat.com> + + * config/tc-d30v.c (check_range): Remove code that incorrectly + sign extended values where bits < 32. + +2000-03-02 H.J. Lu (hjl@gnu.org) + + * configure.in: Support --enable-targets=all on ia32. + * configure: Regenerated. + +2000-03-01 Nick Clifton <nickc@cygnus.com> + + * gasp.c (do_align): Remove bogus check of alignment value. + +2000-02-27 Thomas de Lellis <tdel@windriver.com> + + * config/obj-elf.c (elf_frob_symbol): Remove code which when + TC_PPC was defined forced the type of a symbol with no other type + to be BSF_OBJECT. + +2000-02-27 Hans-Peter Nilsson <hp@axis.com> + + * doc/internals.texi (CPU backend): Mention that + line_separator_chars do not break up comments. Fix typos for + LEX_AT and LEX_NAME descriptions. Document operands for + TC_EQUAL_IN_INSN, md_operand and md_section_align. Correct + description of md_create_short_jump usage. Document argument for + md_undefined_symbol. + +2000-02-27 Jakub Jelinek <jakub@redhat.com> + + * config/tc-sparc.c (OPTION_UNDECLARED_REGS): New option. + (md_parse_option): Handle it. + (md_show_usage): Document it. + +2000-02-27 Ian Lance Taylor <ian@zembu.com> + + * config/tc-alpha.c (md_assemble): Accept `1' and `9' in an + opcode, for the instruction `pal19'. From Andrea Arcangeli + <andrea@suse.de>. + +2000-02-26 Alan Modra <alan@spri.levels.unisa.edu.au> + + * config/tc-i386.c (i386_immediate): Move constant operand sizing + from here.. + (md_assemble): To here, before template operands are matched. + Also ensure a constant immediate is sign extended when we know the + size is at most 16 bits. This is to catch cases like "add + $0xffc0,%ax" where we don't know the size, and thus that the + immediate can be represented as Imm8S until after parsing the + register operand. + (i386_displacement): Similarly sign extend 16 bit constant + displacements. + (md_assemble): Relax 16-bit jump constant range check to suit sign + extended displacements. + +2000-02-26 Andreas Jaeger <aj@suse.de> + + * doc/c-mips.texi (MIPS Opts): Fix typo in last patch. + +2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au> + + * config/tc-i386.c (md_assemble): Don't swap intersegment jmp and + call operands when intel_syntax. + (intel_float_operand): Return 2 for "fi...". + (i386_operand_modifier): Change "DWORD PTR" test to suit above. + Return SHORT_MNEM_SUFFIX for "WORD PTR" when "fi...". Revert + earlier "SHORT" change. + (md_assemble): When determining suffix from Regs, exclude + InOutPortReg. + +2000-02-24 Nick Clifton <nickc@cygnus.com> + + * configure: Add arm-wince, mips-pe and sh-pe targets. + * configure: Regenerate. + + * config/obj-coff.h (COFF_WITH_PE): Define for mips-pe and + sh-pe targets. + (TARGET_FORMAT): Set to "pe-shl" for the sh-pe target and to + "pe-mips" for the mips-pe target. + + * config/tc-arm.c (insns): Change displacement encoded in BL + and B instructions if the target port is arm-wince. + (do_ldst): Do not bias the relocation offset if the target + port is arm-wince. + (md_pcrel_from): Add in missing relocation offset bias if the + target os arm-wince. + + * config/tc-mips.c (mips_target_format): Support COFF flavour. + (md_begin): Disable -G support for mips-pe target. + (md_apply_fix): Treat BFD_RELOC_RVA reloc as BFD_RELOC_32. + * config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Add support for + COFF flavour. + + * config/tc-sh.c (md_begin): sh-pe target is little endian. + * config/tc-sh.h (SUB_SEGMENT_ALIGN): If using a BFD + assembler, just set the alignment to 4. + + * config/te-wince-pe.h: New file for WinCE targets. Define + TE_WINCE. + +2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au> + + * config/tc-i386.c (md_assemble): Swap segments too for intel mode + string instructions. + (i386_operand_modifier): Set i.suffix = WORD_MNEM_SUFFIX for SHORT. + (i386_intel_memory_operand): After finding a segment override, + check again for no `[' before looking for a displacement. Bomb if + more than one displacement rather than silently discarding the + second and subsequent ones. Free strings malloc'd by + build_displacement_string. + +2000-02-24 Catherine Moore <clm@cygnus.com> + + * config/obj-som.c (obj_pseudo_table): Add "weak". + (obj_som_weak): New routine. + +2000-02-24 Alan Modra <alan@spri.levels.unisa.edu.au> + + * config/tc-i386.c (union i386_op): New. + (struct _i386_insn): Delete disps[], imms[], regs[]. Add op[]. + Throughout file replace occurences of disps[n], imms[n], regs[n] + with equivalent op[n].disps, op[n].imms, op[n].regs. Simplify + intel mode operand swapping. Add assert in regKludge and + fake_zero_displacement code. Test i.types[n] when outputting + displacements and immediates. Combine output of Disp16 with + Disp32. + (md_assemble): Don't try to fix broken UNIXWARE_COMPAT opcodes + when in intel mode by (not) reversing fsub and fdiv operands + before the template search. This fails for single operand + shorthand forms of the instruction, and if UNIXWARE_COMPAT is + undefined. Instead fix the base_opcode after we've found the + template. Move base_opcode xor with found_reverse_match from + opcode output code to before this fix so we test for the correct + opcodes. + (md_assemble): Don't use strcmp when deciding to ignore the suffix + check in intel mode. Instead compare opcodes. + + * config/tc-i386.h (TC_RELOC): Delete. + * config/tc-i386.c (TC_RELOC): Delete. Replace usage of TC_RELOC + with equivalent call to reloc. + + * as.h (flag_m68k_mri): Move declaration after target include, and + only declare when TC_M68K defined. Define as zero otherwise. + (LABELS_WITHOUT_COLONS, NO_PSEUDO_DOT): If undefined, define as 0. + * app.c (scrub_m68k_mri): Declare only when TC_M68K defined. + Define as zero otherwise. + (do_scrub_begin): Use m68k_mri parameter only when TC_M68K defined. + (struct app_save): Declare scrub_m68k_mri only when TC_M68K. + (app_push, app_pop): Save scrub_m68k_mri only when TC_M68K. + (do_scrub_chars): Use LABELS_WITHOUT_COLONS directly rather than + testing whether defined. + * cond.c (ignore_input): Use NO_PSEUDO_DOT directly. + * expr.c (operand): #ifdef unused case labels when TC_M68K undefined. + * read.c: Use LABELS_WITHOUT_COLONS and NO_PSEUDO_DOT directly + rather than testing whether defined. + (s_mri): Set flag_m68k_mri only when TC_M68K defined. + (parse_mri_cons): Declare and use only when TC_M68K. + * config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define as 1. + * config/tc-m68k.h (NO_PSEUDO_DOT): Define as 1. + * config/tc-m88k.h (NO_PSEUDO_DOT): Define as 1. + + * NEWS: Mention IBM 370 support. + +2000-02-23 Richard Henderson <rth@cygnus.com> + + * config/tc-i386.c (md_assemble): When swapping operands for + intel_syntax, assume everything that's not Imm or Disp is a + register. + +2000-02-23 Linas Vepstas <linas@linas.org> + + * config/tc-i370.c, config/tc-i370.h: New files. + * Makefile.am: Add support for Linux/IBM 370. + * configure.in: Likewise. + * app.c (do_scrub_begin): Don't lex single quote when TC_I370. + * config/obj-elf.c: Include elf/i370.h + (obj_elf_section): Don't do anything special for flag_mri if TC_I370. + + * Makefile.in: Regenerate. + * configure: Regenerate. + + * doc/c-i370.texi: New file. + * doc/all.texi: Include it. + * doc/as.texinfo: And here. + * doc/Makefile.am(CPU_DOCS): Add c-i370.texi. + * doc/Makefile.in: Regenerate. + +2000-02-19 Michael Meissner <meissner@redhat.com> + + * config/tc-d30v.c (parallel_ok): Use FLAG_NOT_WITH_ADDSUBppp to + determine if an instruction can be used in parallel with an ADDppp + or SUBppp instruction. + +2000-02-22 Andrew Haley <aph@cygnus.com> + + * doc/c-mips.texi (MIPS Opts): Document -mgp32 and -mgp64. + +2000-02-22 Andrew Haley <aph@cygnus.com> + + * config/tc-mips.c (mips_gp32): New variable. + (macro_build) Use mips_gp32. + (mips_ip): Ditto. + (md_longopts): Add "-mgp32" and "-mgp64". + (md_parse_option): Add OPTION_GP32 and OPTION_GP64. + + (OPTION_M7900): Change offset + (OPTION_NO_M7900): Ditto. + +2000-02-22 Alexandre Oliva <oliva@lsd.ic.unicamp.br> + + * config/obj-coff.c (add_lineno): Accept non-positive lineno with + warning, and bump it to 1. + +2000-02-22 Ian Lance Taylor <ian@zembu.com> + + From Brad Lucier <lucier@math.purdue.edu>: + * dwarf2dbg.c (print_stats): Add cast to force printf argument to + match format. + +2000-02-21 Catherine Moore <clm@cygnus.com> + + * config/tc-mips.c (MF_HILO_INSN): Define. + (mips_7000_hilo_fix): Declare. + (append_insn): Conditionally insert nops after an mfhi/mflo insn. + (md_parse_option): Check for 7000_HILO_FIX options. + (OPTION_M7000_HILO_FIX): Define. + (OPTION_NO_M7000_HILO_FIX): Define. + * doc/c-mips.texi (-mfix7000): Describe. + +2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au> + + * listing.c (print_lines): Remove unused variable `end'. + + * config/tc-i386.c (md_assemble): Use `reloc()' to select reloc + type for JumpInterSegment output. Use enum bfd_reloc_code_real for + reloc_type when BFD_ASSEMBLER. + (md_estimate_size_before_relax): Use enum bfd_reloc_code_real for + reloc_type when BFD_ASSEMBLER. Move common code out of switch + statement and quell signed vs. unsigned comparison warning. + +2000-02-18 Nick Clifton <nickc@cygnus.com> + + * config/tc-d10v.c (find_opcode): Add a symbol's value to + the computed frag offset, rather than overwriting it. + +2000-02-17 J"orn Rennecke <amylaar@cygnus.co.uk> + + * config/tc-sh.c ("elf/sh.h"): Include. + (sh_dsp, valid_arch, reg_x, reg_y, reg_efg): New static variables. + (md.begin): Initialize target_arch. + Only include opcodes in has table that match selected architecture. + (parse_reg): Recognize register names for sh-dsp. + (parse_at): Recognize post-modify addressing. + (get_operands): The leading space is now optional. + (get_specific): Remove FDREG_N support. Add support for sh-dsp + arguments. Update valid_arch. + (build_Mytes): Add support for SDT_REG_N. + (find_cooked_opcode): New function, broken out of md_assemble. + (assemble_ppi, sh_elf_final_processing): New functions. + (md_assemble): Use find_cooked_opcode and assemble_ppi. + (md_longopts, md_parse_option): New option: -dsp. + * config/tc-sh.h (elf_tc_final_processing): Define. + (sh_elf_final_processing): Declare. + +2000-02-11 Jeffrey A Law (law@cygnus.com) + + * config/tc-hppa.c (pa_build_unwind_subspace): Use subseg_new to create + the unwinder subspace. Save the current seg/subseg before creating + the new seg/subseg. + +2000-02-10 Nick Clifton <nickc@cygnus.com> + + * config/tc-mcore.c (INST_BYTE0): Redefine to handle big and + little endian targets. + (INST_BYTE1): Redefine to handle big and little endian + targets. + (cpu_type): New type: Select between M340 and M210. + (parse_psrmod): New function: Parse the PSRCLR and PSRSET + instructions of the M340. + (md_assemble): Add support for the MULSH and OPSR classes of + instructions. + (md_atof): Add support for little endian targets. + (md_parse_option): Add support for -EL, -EB and -mcpu command + line switches. + (md_convert_frag): Add support for little endian targets. + (md_apply_fix3): Add support for little endian targets. + (md_number_to_chars): Add support for little endian targets. + +2000-02-10 Timothy Wall <twall@redhat.com> + + * read.c (read_a_source_file): If TC_START_LABEL_WITHOUT_COLON is + defined, use it to verify the symbol just read should be a label. + +2000-02-10 Timothy Wall <twall@redhat.com> + + * app.c (do_scrub_chars): Handle "||" for parallel instructions + when DOUBLEBAR_PARALLEL is defined. Avoid stripping whitespace + around colons when KEEP_WHITE_AROUND_COLON is defined. + * doc/internals.texi (CPU backend): Document DOUBLEBAR_PARALLEL + and KEEP_WHITE_AROUND_COLON. + +2000-02-08 Timothy Wall <twall@redhat.com> + + * read.c (s_rept): Call do_repeat, which abstracts the repeat + logic. + (do_repeat): New. Abstract repeat logic so that a "break" can be + implemented. + (end_repeat): New. Provide support for a "break" out of the + repeat loop. + * read.h: Add prototypes for new functions. + +2000-02-08 Timothy Wall <twall@redhat.com> + + * doc/internals.texi: Document NUMBERS_WITH_SUFFIX macro. + * as.h: Provide a default NUMBERS_WITH_SUFFIX definition (zero). + * expr.c: Handle numbers with suffixes if NUMBERS_WITH_SUFFIX is + non-zero. + +2000-02-08 Timothy Wall <twall@redhat.com> + + * read.c: Added elseif to directives table. + * read.h: Added prototype for s_elseif. + * doc/as.texinfo: Added description for elseif. + * cond.c (s_elseif): New function + +2000-02-04 Timothy Wall <twall@redhat.com> + + * listing.c (print_lines): Remove conditionals causing bug in + listings. + +2000-02-03 Timothy Wall <twall@cygnus.com> + + * as.h: Define OCTETS_PER_BYTE and OCTETS_PER_BYTE_POWER + default values. + * frags.c (frag_new): Calculate fr_fix in octets + (frag_now_fix) Return offset as target address offset (bytes). + (frag_now_fix_octets) New - Return offset in octets (8-bit + quantities). + * frags.h: Added prototype for frag_now_fix_octets(). + Distinguish between octets and bytes in field descriptions. + * listing.c (calc_hex): Account for octets vs bytes when + printing addresses/offsets. + (print_lines) Ditto. Also, if LISTING_WORD_SIZE is not 1, and + target is little-endian, print the octets in a word in big-endian + order so that the display looks like a proper hexadecimal number, + instead of having the octets reversed. + * read.c (do_align): When recording alignment, alignment power + should be in terms of target bytes (minimum addressible unit) + instead of octets. + (do_org) Convert ORG target address (byte) argument into an + octet offset when generating a variable fragment. + * symbols.c (resolve_symbol_value): Symbol final value + converted to a target address offset (bytes) from its octet offset. + * config/obj-coff.c (coff_frob_symbol): Symbol target address + offset (bytes) is adjusted by the frag offset (octets) converted + to bytes. + (coff_frob_section) Section alignment power is in terms of bytes; + convert it to an octet alignment power when calculating size (and + size mask) in octets. Don't modify the section size in order to + "align" it for TI COFF, since that format has a different method + for storing alignment information. + +2000-02-01 Timothy Wall <twall@cygnus.com> + + * stabs.c (generate_asm_file): Escape backslashes in stabs file + entries, matching the way GCC generates them. If not escaped, the + filename is encoded incorrectly. + +2000-01-31 Nick Clifton <nickc@cygnus.com> + + * config/tc-arm.c (reg_table): Add support for ATPCS register + naming conventions. + +2000-01-31 Geoff Keating <geoffk@cygnus.com> + + * config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Don't define if + already defined. + * config/tc-ppc.h [OBJ_XCOFF] (OBJ_COPY_SYMBOL_ATTRIBUTES): + New macro. + * config/tc-ppc.c (ppc_fix_adjustable): Don't look at the frag + of a symbol when we really care about its value. + +2000-01-19 Chandra Chavva <cchavva@cygnus.com> + + * config/tc-mcore.c (md_assemble): Give warning message if + operands passes to instruction are more than the spec. + +2000-01-27 Thomas de Lellis <tdel@windriver.com> + + * config/tc-arm.c (armadjust_symtab): If the assembler is in + Thumb mode but the label seen was not declared as '.thumb_func' + then set the ST_INFO type to STT_ARM_16BIT mode. This allows + correct disassembly of Thumb code bounded by non function labels. + +2000-01-27 Alan Modra <alan@spri.levels.unisa.edu.au> + + * Makefile.am (MULTI_CFILES): Add config/e-i386aout.c + Add dependencies for e-i386aout.o. Fix 2 comment lines. + + * Makefile.in: Same here. + Update copyright. + + * configure.in: Set bfd_gas for i386-aout when primary target + is bfd. Handle i386aout emulation. Don't use te_file=multi, as + we may need the primary te_file. Remove incorrect comment. + + * configure: Regenerate. + + * config/e-i386aout.c: New file. + + * as.c (USE_EMULATIONS): Move to before print_version_id. + (struct emulation): Add i386aout. + (show_usage): Split text strings. Reformat -a text. Add --em + help. + Update copyright. + + * obj.h (struct format_ops): Add s_get_other and s_get_desc. + (aout_format_ops): New. + Update copyright. + + * read.c (s_lcomm_internal): Rewrite OBJ_AOUT,OBJ_BOUT + preprocessor conditional and add aout USE_EMULATIONS tests. + (read_a_source_file): Don't pass error strings to printf as + format arg. + Update copyright. + + * gasp.c (exp_get_abs): Don't pass error strings to printf as + format arg. + (do_data): Same here. + (process_file): And here. + Update copyright. + + * symbols.c (colon): Rewrite "already defined" fatal message + code for aout with USE_EMULATIONS. + Update copyright. + + * config/obj-aout.c (OBJ_HEADER): Define. + (obj_pseudo_table): Rename to aout_pseudo_table. Init all + fields of sentinel. + (obj_aout_frob_symbol): Expand S_GET_DESC, S_GET_TYPE, + S_GET_OTHER, S_SET_TYPE macros since we don't need obj-multi + forms here. + (obj_aout_type): Expand S_SET_OTHER here too. + (obj_read_begin_hook): Remove. + (aout_pop_insert): New. + (obj_aout_s_get_other): New. + (obj_aout_s_get_desc): New. + (aout_format_ops): New. + Update copyright. + + * config/obj-aout.h (obj_pop_insert): Define so non-multi usage + gets aout_pseudo_table. + (aout_pseudo_table): Declare. + (obj_read_begin_hook): Define. + Update copyright. + + * config/obj-coff.c (obj_pseudo_table): Rename to + coff_pseudo_table. + (coff_pop_insert): Use coff_pseudo_table. + (coff_sec_sym_ok_for_reloc): Remove. + (coff_format_ops): Add 0 entries for s_get_size, s_set_size, + and comment all zero entries and remove #if 0 code. + Update copyright. + + * config/obj-coff.h (obj_pop_insert): Define. + (coff_pseudo_table): Declare. + Update copyright. + + * config/obj-ecoff.c (ecoff_format_ops): Add 0 entries for + s_get_size, s_set_size. Comment all zero entries. + Update copyright. + + * config/obj-elf.c (elf_s_get_other): New function. + (obj_read_begin_hook): Rename to elf_obj_read_begin_hook. + (obj_symbol_new_hook): Rename to elf_obj_symbol_new_hook. + (elf_format_ops): Add elf_s_get_other, 0 s_get_size entry, and + comment. + (obj_elf_parse_section_letters): Don't pass error strings to + printf as format arg. + Update copyright. + + * config/obj-elf.h (ECOFF_DEBUGGING): Define when + OBJ_MAYBE_ECOFF. + (elf_s_get_other): Declare. + (S_GET_OTHER) Define as elf_s_get_other if not already + defined. + (S_SET_OTHER): Only define when not already defined. + (elf_obj_read_begin_hook): Declare. + (obj_read_begin_hook): Define. + (elf_obj_symbol_new_hook): Declare. + (obj_symbol_new_hook): Define. + Update copyright. + + * config/obj-multi.h: Add copyright header and protect against + multiple inclusion. Add * to all function pointers. + (OBJ_HEADER): If defined, include it rather than other defines + in this file. + (obj_frob_file_after_relocs): Test for NULL. + (obj_symbol_new_hook): Here too. + (obj_sec_sym_ok_for_reloc): And here. + (S_GET_OTHER): Define. + (S_GET_DESC): Define. + (ECOFF_DEBUGGING): Remove as it's done in obj-elf.h + (OBJ_MAYBE_ELF): Update comment. + + * config/tc-i386.c (i386_immediate): Add OBJ_MAYBE_AOUT to + OBJ_AOUT preprocessor conditional and handle emulation by + testing OUTPUT_FLAVOR. + (i386_displacement): Here too. + (md_section_align): Similarly here. + (i386_target_format): Conditionally compile when more than one + of OBJ_MAYBE_{ELF,COFF,AOUT} defined. Add aout case. + (i386_immediate): Fix error message for aout BFD_ASSMBLER. + (i386_displacement): Here too. + Update copyright. + + * config/tc-i386.h (AOUT_TARGET_FORMAT): Define for each TE_*. + Define TARGET_FORMAT for aout only when not multi. + Update copyright. + + * config/te-multi.h: Delete file as it's identical to te-generic.h + +2000-01-15 Alan Modra <alan@spri.levels.unisa.edu.au> + + * config/tc-i386.h (DWORD_MNEM_SUFFIX): Delete. + * config/tc-i386.c (DWORD_MNEM_SUFFIX): Rename all occurrences to + LONG_MNEM_SUFFIX. + + * config/tc-i386.h (INTEL_DWORD_MNEM_SUFFIX): Rename to + DWORD_MNEM_SUFFIX. + * config/tc-i386.c (INTEL_DWORD_MNEM_SUFFIX): Here too. Fix some + comments. + +2000-01-13 Clinton Popetz <cpopetz@cygnus.com> + + * config/tc-mips.c (mips_do_align): New function. + * config/tc-mips.h (md_do_align): Define. + +2000-01-10 Philip Blundell <philb@gnu.org> + + * doc/c-arm.texi (ARM Options): Fix typo. + (ARM-Chars): Correct description of `#'. Mention that `;' is a + line separator for Linux. + * doc/as.texinfo (Comments): Mention the ARM. + +2000-01-10 Philip Blundell <pb@futuretv.com> + + * configure.in (arm*-*-conix*): New target. + (arm*-*-linux-gnu*): Match instead of arm-*-linux* and + armv*-*-linux-gnu. + * configure: Regenerate. + +2000-01-03 Martin v. Loewis <loewis@informatik.hu-berlin.de> + + * config/obj-elf.c (elf_pseudo_table): Define visibility pseudos. + (obj_elf_visibility): New function. + + * doc/as.texinfo (Visibility): New node: document visibility + pseudo ops. + +For older changes see ChangeLog-9899 diff --git a/contrib/binutils/gas/ChangeLog-9295 b/contrib/binutils/gas/ChangeLog-9295 index 7ea48e6..a761ea1 100644 --- a/contrib/binutils/gas/ChangeLog-9295 +++ b/contrib/binutils/gas/ChangeLog-9295 @@ -151,8 +151,8 @@ Tue Nov 28 10:42:36 1995 Ken Raeburn <raeburn@cygnus.com> (fix_new_internal): Increment it. * read.c (read_print_statistics): New function. * read.h (read_print_statistics): Declare. - * symbol.c (symbol_print_statistics): New function. - * symbol.h (symbol_print_statistics): Declare. + * symbols.c (symbol_print_statistics): New function. + * symbols.h (symbol_print_statistics): Declare. * hash.c (hash_print_statistics): New function. * hash.h (hash_print_statistics): Declare. * config/tc-i386.c (i386_print_statistics): New function. @@ -458,8 +458,8 @@ Thu Oct 26 19:18:27 1995 Ken Raeburn <raeburn@cygnus.com> Thu Oct 26 11:45:03 1995 Richard Earnshaw (rearnsha@armltd.co.uk) - * tc-arm.c (do_ldst): Assemble ldr/str r0, [r1] as a pre-increment - instruction. + * config/tc-arm.c (do_ldst): Assemble ldr/str r0, [r1] as a + pre-increment instruction. Wed Oct 25 11:59:24 1995 Per Bothner <bothner@kalessin.cygnus.com> @@ -1930,8 +1930,8 @@ Tue Aug 1 17:35:26 1995 Ian Lance Taylor <ian@cygnus.com> Tue Aug 1 11:35:18 1995 steve chamberlain <sac@slash.cygnus.com> - * tc-sh.c (md_convert_frag): Make some error messages more - explict. + * config/tc-sh.c (md_convert_frag): Make some error messages + more explict. Mon Jul 31 21:40:47 1995 Ken Raeburn <raeburn@cygnus.com> @@ -2392,7 +2392,7 @@ Wed Jul 5 12:01:49 1995 Ian Lance Taylor <ian@cygnus.com> (s_stringer, s_mips_space): Remove unneeded declarations. (md_parse_option): In case 'g', set mips_debug to debugging level. (mips_local_label): New function. - * tc-mips.h (LOCAL_LABEL): Call mips_local_label. + * config/tc-mips.h (LOCAL_LABEL): Call mips_local_label. (mips_local_label): Declare. Wed Jul 5 00:59:22 1995 Fred Fish (fnf@cygnus.com) @@ -3143,10 +3143,10 @@ Thu Apr 13 18:18:08 1995 Ken Raeburn <raeburn@cujo.cygnus.com> Thu Apr 13 14:34:36 1995 Torbjorn Granlund <tege@adder.cygnus.com> - * tc-m68k.c (m68k_init_after_args): Test for m68360. + * config/tc-m68k.c (m68k_init_after_args): Test for m68360. (md_parse_option): Likewise. (md_show_usage): Mention m68360. - * tc-m68k.h (TARGET_WORD_SIZE): Define. + * config/tc-m68k.h (TARGET_WORD_SIZE): Define. (TARGET_ARCH): Define. * expr.c (integer_constant): If TARGET_WORD_SIZE is defined, @@ -3714,7 +3714,8 @@ Thu Jan 26 11:35:33 1995 Michael Meissner <meissner@cygnus.com> Wed Jan 25 16:23:13 1995 Jim Wilson <wilson@chestnut.cygnus.com> - * tc-sh.c (little): Add argument IGNORE to avoid compiler warnings. + * config/tc-sh.c (little): Add argument IGNORE to avoid + compiler warnings. (md_pseudo_table): Add space for consistent formatting. (COND8_RANGE, COND12_RANGE): Delete unused macros. (COND8_F, COND8_M, COND12_F, COND12_M, UNCOND12_F, UNCOND12_M): @@ -3878,7 +3879,7 @@ Wed Jan 18 12:16:07 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> (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. + * config/tc-h8300.h (tc_reloc_mangle): Declare. Tue Jan 17 10:58:06 1995 Ian Lance Taylor <ian@sanguine.cygnus.com> @@ -7482,7 +7483,7 @@ Mon Jan 24 19:18:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) of unused functions. (obj_frob_symbol): Define if ECOFF_DEBUGGING. - * tc-mips.c (g_switch_seen): New static variable. + * config/tc-mips.c (g_switch_seen): New static variable. (md_parse_option): Set g_switch_seen for -G option. (s_option): If creating PIC code, force the GP size to be 0. Warn if -G switch used with a non-zero value. @@ -7515,7 +7516,7 @@ Tue Jan 18 16:19:58 1994 Jeffrey A. Law (law@snake.cs.utah.edu) * config/tc-hppa.c: Disable multiple $CODE$ subspace code. It confuses GDB for some unknown reason. - * cofnig/obj-som.c: Likewise. + * config/obj-som.c: Likewise. Tue Jan 18 19:05:32 1994 Ken Raeburn (raeburn@cujo.cygnus.com) @@ -7758,7 +7759,7 @@ Wed Dec 29 14:37:26 1993 Ken Raeburn (raeburn@cujo.cygnus.com) Sun Dec 26 14:31:47 1993 Torbjorn Granlund (tege@adder.cygnus.com) - * tc-hppa.c (pre_defined_registers): Convert to lower case. + * config/tc-hppa.c (pre_defined_registers): Convert to lower case. Delete spurious register names "%r4L", etc. (selector_table): Sort and convert to lower case. (cons_fix_new_hppa): `reloc_type' => `rel_type'. @@ -7953,7 +7954,7 @@ Fri Dec 3 10:56:40 1993 Jeffrey A. Law (law@snake.cs.utah.edu) Fri Dec 3 09:47:30 1993 Pete Hoogenboom (hoogen@cs.utah.edu) - * tc-hppa.c: (tc_gen_reloc): Addend for a plabel relocation should + * config/tc-hppa.c: (tc_gen_reloc): Addend for a plabel relocation should be either 0 or 2 (no static link or static link required). Always assume no static link. @@ -8480,7 +8481,7 @@ Tue Nov 2 18:04:11 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) Tue Nov 2 15:07:07 1993 Jeffrey A. Law (law@snake.cs.utah.edu) - * tc-hppa.c: Add %dp and %rp as synonyms for %r27 and %r2 in the + * config/tc-hppa.c: Add %dp and %rp as synonyms for %r27 and %r2 in the predefined register table. (pa_parse_number): Handle %rp in common register shortcut code. Consistently set return value to -1 for an error. Clean up error @@ -8849,7 +8850,7 @@ Mon Oct 25 10:20:31 1993 Ken Raeburn (raeburn@rover.cygnus.com) Sun Oct 24 16:49:00 1993 Jim Wilson (wilson@x1.cygnus.com) - * tc-mips.c (md_pseudo_table): Add dword pseudo op. + * config/tc-mips.c (md_pseudo_table): Add dword pseudo op. Fri Oct 22 20:40:56 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com) @@ -8946,7 +8947,7 @@ Thu Oct 21 12:52:01 1993 Ken Raeburn (raeburn@cygnus.com) * write.c (adjust_reloc_syms): Provide a hook so that a target cpu configuration can reject certain relocation reductions. - * tc-hppa.h (tc_fix_adjustable): New macro. Only accept relocations + * config/tc-hppa.h (tc_fix_adjustable): New macro. Only accept relocations which do not involve function symbols. * config/tc-hppa.h: Reindent with GNU-indent. Delete references @@ -9701,7 +9702,7 @@ Wed Aug 25 13:37:46 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) mirror that of pa_parse_nonneg_cmpsub_cmpltr. (pa_parse_nonneg_add_cmpltr): Likewise. (pa_parse_neg_add_cmpltr): Likewise. - * tc-hppa.h (pa_param): Declare. + * config/tc-hppa.h (pa_param): Declare. Tue Aug 24 15:41:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) @@ -10200,7 +10201,7 @@ Mon Jul 19 15:21:20 1993 Ken Raeburn (raeburn@rtl.cygnus.com) * config/obj-elf.h: Don't include struc-symbol.h. (obj_elf_frob_symbol): Declare arg as struct symbol *. - * tc-sparc.h (LOCAL_LABEL) [OBJ_ELF]: Local labels can start with + * config/tc-sparc.h (LOCAL_LABEL) [OBJ_ELF]: Local labels can start with "L" or "_.L_". * write.c (write_relocs): New function, split off from @@ -11126,7 +11127,7 @@ Wed Apr 28 13:40:29 1993 Ian Lance Taylor (ian@rtl.cygnus.com) Mon Apr 26 18:29:05 1993 Steve Chamberlain (sac@thepub.cygnus.com) - * config/tc-sh.ch, config/tc-sh.h: New files supporting Hitachi + * config/tc-sh.c, config/tc-sh.h: New files supporting Hitachi SH. Mon Apr 26 12:28:27 1993 Ian Lance Taylor (ian@cygnus.com) @@ -11620,7 +11621,7 @@ Mon Mar 8 14:57:10 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) Fri Mar 5 09:05:55 1993 Ian Lance Taylor (ian@cygnus.com) * read.h: Define stringer here. - read.c, config/obj-ieee.c, config/obj-tcm88k.c: Not any of these + * read.c, config/obj-ieee.c, config/obj-tcm88k.c: Not any of these places. Thu Mar 4 11:52:23 1993 Steve Chamberlain (sac@thepub.cygnus.com) @@ -11847,8 +11848,8 @@ Mon Feb 8 13:56:17 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) Thu Feb 4 12:45:16 1993 Steve Chamberlain (sac@thepub.cygnus.com) - * config/{h8500.mt, tc-h8500.c, tc-h8500.h, obj-coffbfd.c, - obj-coffbfd.h}: support for the H8/500 + * config/{h8500.mt, config/tc-h8500.c, config/tc-h8500.h, + config/obj-coffbfd.c, obj-coffbfd.h}: support for the H8/500. Wed Feb 3 19:28:18 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) @@ -11994,25 +11995,25 @@ Tue Jan 5 08:42:16 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) * config-gas.com: New file. Script for VMS systems to set up the configuration to build gas for VMS, and create config.status. * make-gas.com: Redone to work with new scheme. - * obj-vms.c: Patch to fix bug where we were not correctly parsing the + * config/obj-vms.c: Patch to fix bug where we were not correctly parsing the stabs directives. - * obj-vms.c: Define macros COPY_LONG and COPY_SHORT which + * config/obj-vms.c: Define macros COPY_LONG and COPY_SHORT which will swap bytes if needed on a big endian system. Use throughout as needed. - * obj-vms.c (obj_aout_stab): Add code to generate listing file. - * obj-vms.c (VMS_typedef_parse): Add alias to correctly handle certain + * config/obj-vms.c (obj_aout_stab): Add code to generate listing file. + * config/obj-vms.c (VMS_typedef_parse): Add alias to correctly handle certain types of malformed stabs. Change parsing algorithm so that we are more certain of having all of the information that we need on hand. - * obj-vms.c (final_forward_reference): New function, used to help + * config/obj-vms.c (final_forward_reference): New function, used to help resolve the data types of as many struct elements as possible when some part of the struct is not fully defined by the compiler. - * obj-vms.c (VMS_LSYM_Parse): Correctly handle case of continuation + * config/obj-vms.c (VMS_LSYM_Parse): Correctly handle case of continuation stabs directives. - * obj-vms.c (VMS_write_object_file): Define all vtable psects + * config/obj-vms.c (VMS_write_object_file): Define all vtable psects as symbols as well in the object file. Look for external functions that start with "__vt.", and turn them into variables, since the g++ compiler is incapable of doing this. - * tc-vax.c: Add '1' option for backward compatibility with older GCC + * config/tc-vax.c: Add '1' option for backward compatibility with older GCC versions. * bignum-copy.c (bignum_copy): Fix bug where we pad with zeroes. * input-scrub.c (as_where): Fix bug where as would crash if we did not @@ -12148,8 +12149,8 @@ Mon Dec 28 10:32:05 1992 Ken Raeburn (raeburn@cygnus.com) Wed Dec 16 12:12:33 1992 Ian Lance Taylor (ian@cygnus.com) - * write.c, obj-ieee.c: don't define SUB_SEGMENT_ALIGN if it is - already defined. + * write.c, config/obj-ieee.c: don't define SUB_SEGMENT_ALIGN + if it is already defined. Tue Dec 15 12:40:11 1992 Steve Chamberlain (sac@thepub.cygnus.com) @@ -12191,9 +12192,9 @@ Sat Dec 12 15:26:34 1992 Ian Lance Taylor (ian@cygnus.com) used in AT&T i386 syntax. (fixup_segment): Take segment as argument. On the i386, adjust PC relative addends by the segment vaddr. - * tc-i386.h: Define SUB_SEGMENT_ALIGN. - * tc-a29k.h: Define ZERO_BASED_SEGMENTS. - * tc-i386.c: (i386_operand): If I386COFF, accept any segment type. + * config/tc-i386.h: Define SUB_SEGMENT_ALIGN. + * config/tc-a29k.h: Define ZERO_BASED_SEGMENTS. + * config/tc-i386.c: (i386_operand): If I386COFF, accept any segment type. Tue Dec 8 00:06:48 1992 Ken Raeburn (raeburn@rtl.cygnus.com) @@ -12327,9 +12328,9 @@ Mon Nov 23 11:00:16 1992 Ken Raeburn (raeburn@cygnus.com) * configure.in: No te-386bsd.h file exists; don't try to use it. - * obj-coff.c (obj_coff_endef): Use as_warn, not fprintf. + * config/obj-coff.c (obj_coff_endef): Use as_warn, not fprintf. - * tc-m68k.c (md_assemble): Don't complain about 68000 with 68881; + * config/tc-m68k.c (md_assemble): Don't complain about 68000 with 68881; could be doing emulation. Thu Nov 19 11:47:19 1992 Steve Chamberlain (sac@thepub.cygnus.com) @@ -12349,45 +12350,46 @@ Tue Nov 10 09:49:24 1992 Ian Lance Taylor (ian@cygnus.com) read.c, app.c: removed definitions of comment_chars, line_comment_chars, and line_separator_chars. - * tc-m68k.c (m68k_reg_parse): If REGISTER_PREFIX isn't defined, + * config/tc-m68k.c (m68k_reg_parse): If REGISTER_PREFIX isn't defined, still accept (but don't require) OPTIONAL_REGISTER_PREFIX before the register name. (insert_reg): put REGISTER_PREFIX before register names before putting them in the symbol table. - * tc-m68k.h (OPTIONAL_REGISTER_PREFIX): Define to be "%", if not + * config/tc-m68k.h (OPTIONAL_REGISTER_PREFIX): Define to be "%", if not M68KCOFF. - * obj-coffbfd.c (fill_section): set STYP_NOLOAD bit for .bss + * config/obj-coffbfd.c (fill_section): set STYP_NOLOAD bit for .bss section. - * atof-ieee.c, atof-ns32k.c, tc-*.c: made EXP_CHARS, FLT_CHARS, - comment_chars, line_comment_chars and line_seperator_chars - consistently const, and always initialized them. Included read.h. + * config/atof-ieee.c, config/atof-ns32k.c, config/tc-*.c: made + EXP_CHARS, FLT_CHARS, comment_chars, line_comment_chars and + line_seperator_chars consistently const, and always + initialized them. Included read.h. Thu Nov 5 17:55:41 1992 Jim Wilson (wilson@sphagnum.cygnus.com) - * tc-sparc.c (sparc_ip): Add code to flag error if an absolute + * config/tc-sparc.c (sparc_ip): Add code to flag error if an absolute constant will not fit in an immediate field. (md_apply_fix, RELOC_BASE13 case): Check for relocation overflow. Wed Nov 4 07:50:46 1992 Ken Raeburn (raeburn@cygnus.com) - * obj-coff.c (callj_table): Delete global variable. + * config/obj-coff.c (callj_table): Delete global variable. (obj_emit_relocations): Define it locally here, and only if TC_I960 is defined. - * tc-m68k.c (m68k_reg_parse): Underscore is part of a symbol name. + * config/tc-m68k.c (m68k_reg_parse): Underscore is part of a symbol name. (m68k_ip): Don't warn about bignum used as float bit-pattern. - * obj-coff.c: Replaced ANSI and non-ANSI function declarations + * config/obj-coff.c: Replaced ANSI and non-ANSI function declarations with a single set using PARAMS macro. - * tc-i960.c (tc_bout_fix_to_chars): Bit-field fixups want a length + * config/tc-i960.c (tc_bout_fix_to_chars): Bit-field fixups want a length of 2. - * tc-i960.c: Missed a couple of 0->NO_RELOC conversions. + * config/tc-i960.c: Missed a couple of 0->NO_RELOC conversions. - * tc-i960.h (N_BALNAME, N_CALLNAME): Define as char-type values, + * config/tc-i960.h (N_BALNAME, N_CALLNAME): Define as char-type values, so widening works consistently. Wed Oct 28 08:52:34 1992 Ken Raeburn (raeburn@cygnus.com) @@ -12400,7 +12402,7 @@ Wed Oct 28 08:52:34 1992 Ken Raeburn (raeburn@cygnus.com) Fri Oct 23 14:40:38 1992 Ian Lance Taylor (ian@cygnus.com) - * obj-coffbfd.c (write_object_file): check return value of + * config/obj-coffbfd.c (write_object_file): check return value of bfd_close_all_done. Tue Oct 20 12:18:08 1992 Ian Lance Taylor (ian@cygnus.com) @@ -12426,11 +12428,11 @@ Sat Oct 10 12:33:45 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) Mon Oct 5 09:28:57 1992 Steve Chamberlain (sac@thepub.cygnus.com) fix i960+non-bfd coff bit rot. - * obj-coff.c (c_dot_file_symbol, obj_coff_ln, obj_coff_line): + * config/obj-coff.c (c_dot_file_symbol, obj_coff_ln, obj_coff_line): support for C source listings. (obj_coff_endef): look in the right part of the symbol for the symbol name - * tc-m68k.c (get_num): make it work for all segments, not just the + * config/tc-m68k.c (get_num): make it work for all segments, not just the first three. Mon Oct 5 03:30:36 1992 Mark Eichin (eichin at tweedledumber.cygnus.com) @@ -12443,25 +12445,26 @@ Thu Oct 1 23:05:12 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) Tue Sep 29 12:22:52 1992 Steve Chamberlain (sac@thepub.cygnus.com) - * obj-coffbfd.c (write_object_file): don't fixup for the z8k - * tc-z8k.c: lots of bug fixes + * config/obj-coffbfd.c (write_object_file): don't fixup for the z8k + * config/tc-z8k.c: lots of bug fixes Tue Sep 29 10:51:55 1992 Ian Lance Taylor (ian@cygnus.com) - * tc-i960.h, tc-i960.c: avoid the ANSI preprocessor addition - #elif, since it is not supported by old compilers. - ho-rs6000.h, tc-m68k.c: the native RS/6000 compiler miscompiles a - couple of expressions in tc-m68k.c. + * config/tc-i960.h, config/tc-i960.c: avoid the ANSI + preprocessor addition #elif, since it is not supported by old + compilers. + config/ho-rs6000.h, config/tc-m68k.c: the native RS/6000 + compiler miscompiles a couple of expressions in tc-m68k.c. Mon Sep 28 21:18:24 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) * read.c (cons): If NO_RELOC is defined, use it. - * tc-i960.c (get_cdisp): Use NO_RELOC, not 0, in call to fix_new. + * config/tc-i960.c (get_cdisp): Use NO_RELOC, not 0, in call to fix_new. Fri Sep 25 18:18:52 1992 Ian Lance Taylor (ian@cygnus.com) - * tc-m68k.h: if M68KCOFF, define DOT_LABEL_PREFIX (to require + * config/tc-m68k.h: if M68KCOFF, define DOT_LABEL_PREFIX (to require local labels to start with a .) and set REGISTER_PREFIX to %. tc-m68k.c (m68k_reg_parse): accept REGISTER_PREFIX if defined. @@ -12481,7 +12484,7 @@ Thu Sep 24 12:42:32 1992 Brendan Kehoe (brendan@rtl.cygnus.com) Tue Sep 22 13:02:07 1992 Sean Eric Fagan (sef@cygnus.com) - * obj-coffbfd.c (do_relocs_for,fill_section): now allocate all + * config/obj-coffbfd.c (do_relocs_for,fill_section): now allocate all sections starting from zero, rather than making them consecutive. This makes subsequent reloc calculations easier, esp if the object format doesn't understand addends. (obj_coff_lcomm): (maybe temporarily) @@ -12490,17 +12493,17 @@ Tue Sep 22 13:02:07 1992 Sean Eric Fagan (sef@cygnus.com) Tue Sep 22 15:10:51 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) - * tc-m68k.c: Replace "enum m68k_architecture" with "int" + * config/tc-m68k.c: Replace "enum m68k_architecture" with "int" throughout. That enum no longer means what we thought it meant. - * tc-m68k.c (md_assemble, md_parse_option): Handle new + * config/tc-m68k.c (md_assemble, md_parse_option): Handle new "-mno-688[58]1" options. - * tc-m68k.c: Added CPU32 support. + * config/tc-m68k.c: Added CPU32 support. Fri Sep 18 08:02:18 1992 Steve Chamberlain (sac@thepub.cygnus.com) - * tc-m68k.c (m68k_ip): An(disp) is not pc relative. + * config/tc-m68k.c (m68k_ip): An(disp) is not pc relative. Tue Sep 15 17:25:05 1992 Jim Wilson (wilson@sphagnum.cygnus.com) @@ -12525,19 +12528,19 @@ Sun Sep 13 20:30:10 1992 Ian Lance Taylor (ian@cygnus.com) * write.c (fixup_segment): fixed missing parens in expression checking for byte or word overflow. - * obj-coffbfd.h: define WARN_SIGNED_OVERFLOW_WORD. + * config/obj-coffbfd.h: define WARN_SIGNED_OVERFLOW_WORD. obj-coffbfd.c (fixup_segment): check for signed .word overflow if WARN_SIGNED_OVERFLOW_WORD. - * obj-coffbfd.c (fixup_segment): fixed missing parens in + * config/obj-coffbfd.c (fixup_segment): fixed missing parens in expression checking for byte or word overflow. Fri Sep 11 10:21:04 1992 Steve Chamberlain (sac@thepub.cygnus.com) Support for i386 coff - * obj-coffbfd.h : added stuff - * tc-i386.c (tc_coff_fix2rtype): new function - * tc-i386.h : new coff defines + * config/obj-coffbfd.h : added stuff + * config/tc-i386.c (tc_coff_fix2rtype): new function + * config/tc-i386.h : new coff defines Thu Sep 10 09:23:15 1992 Ian Lance Taylor (ian@cygnus.com) @@ -12553,21 +12556,23 @@ Wed Sep 9 11:06:25 1992 Ian Lance Taylor (ian@cygnus.com) Makefile.in: Handle m68*-*-coff*. read.c, read.h: add mult argument to s_space - * tc-m68k.c (m68k_ip, m68k_ip_op, get_num, try_moto_index): merge + * config/tc-m68k.c (m68k_ip, m68k_ip_op, get_num, try_moto_index): merge Motorola and MIT syntax; gas can now assemble either type of file. - tc-m68kmote.c, tc-m68kmote.h: removed now superfluous files. + * config/tc-m68kmote.c, config/tc-m68kmote.h: removed now + superfluous files. + From Steve Chamberlain: - m68kcoff.mt: for m68k COFF. - obj-coffbfd.c: (fixup_mdeps) added + * config/m68kcoff.mt: for m68k COFF. + * config/obj-coffbfd.c: (fixup_mdeps) added (size_section) removed bad sanity check (fill_section) added rs_machine_dependent case (write_object_file) call fixup_mdeps (fixup_segment) set fx_subsy to 0. - obj-coffbfd.h: define WORKING_DOT_WORD (too hard to support) and - handle m68k. - tc-m68k.c, config/tc-m68k.h: added m68k COFF support and Motorala - pseudo ops. + * config/ obj-coffbfd.h: define WORKING_DOT_WORD (too hard to + support) and handle m68k. + * config/tc-m68k.c, config/tc-m68k.h: added m68k COFF support + and Motorala pseudo ops. Tue Sep 8 17:10:58 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) @@ -12592,9 +12597,11 @@ Sat Aug 29 12:11:12 1992 Jim Wilson (wilson@sphagnum.cygnus.com) Fri Aug 28 16:25:22 1992 Ian Lance Taylor (ian@cygnus.com) - * obj-bout.h, obj-bout.c (obj_header_append, obj_symbol_to_chars), - tc-i960.c (md_ri_to_chars): Always output bout object file in - little endian byte order (used to use endianness of host). + * config/obj-bout.h, config/obj-bout.c (obj_header_append, + obj_symbol_to_chars). + * config/tc-i960.c (md_ri_to_chars): Always output bout object + file in little endian byte order (used to use endianness of + host). Tue Aug 25 15:50:48 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) @@ -12623,9 +12630,9 @@ Mon Aug 24 12:45:43 1992 Ian Lance Taylor (ian@cygnus.com) * Makefile.in: defined TARGET_CPU for C code so that it can choose one element of a family. - * tc-m68k.c: use TARGET_CPU to choose default cpu type. + * config/tc-m68k.c: use TARGET_CPU to choose default cpu type. - * te-generic.h: default to LOCAL_LABELS_DOLLAR and LOCAL_LABELS_FB + * config/te-generic.h: default to LOCAL_LABELS_DOLLAR and LOCAL_LABELS_FB so that we can assemble hand-written libgcc code. Fri Aug 21 14:38:44 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) @@ -12636,7 +12643,7 @@ Fri Aug 21 14:38:44 1992 Ken Raeburn (raeburn@cambridge.cygnus.com) Wed Aug 19 11:20:59 1992 Ian Lance Taylor (ian@cygnus.com) - * tc-m68k.c, tc-m68kmote.c: the cas2 instruction is supposed to be + * config/tc-m68k.c, tc-m68kmote.c: the cas2 instruction is supposed to be written with indirection on the last two operands, which can be either data or address registers. Added a new operand type 'r' which accepts either register type. Added '(' to notend stuff in @@ -12658,16 +12665,16 @@ Wed Aug 19 09:25:09 1992 Ken Raeburn (raeburn@cygnus.com) defined, call it. Change segments before calling fixup_segment. (relax_align): If linkrelax, provide extra padding. - * obj-bout.c (obj_emit_relocations): Emit alignment relocs despite + * config/obj-bout.c (obj_emit_relocations): Emit alignment relocs despite their not having symbols associated. - * tc-i960.c (norelax, instrument_branches): Default initializer is + * config/tc-i960.c (norelax, instrument_branches): Default initializer is sufficient. (linkrelax): Delete variable definition. (mem_fmt): Call fix_new with NO_RELOC. (tc_bout_fix_to_chars): Handle alignment relocs. (i960_handle_align): New function. - * tc-i960.h (linkrelax): Delete declaration. + * config/tc-i960.h (linkrelax): Delete declaration. (HANDLE_ALIGN): New macro; calls i960_handle_align. (NEED_FX_R_TYPE, NO_RELOC): New macros. @@ -12716,7 +12723,7 @@ Tue Aug 11 12:58:14 1992 Ken Raeburn (raeburn@cygnus.com) Mon Aug 10 14:37:08 1992 Per Bothner (bothner@cygnus.com) - * tc-m68k.c: ".align N" means align to N-byte boundary *only* + * config/tc-m68k.c: ".align N" means align to N-byte boundary *only* if TN_SUN3; otherwise align to 2**N-byte bounary. Thu Aug 6 12:10:39 1992 Steve Chamberlain (sac@thepub.cygnus.com) @@ -12734,7 +12741,7 @@ Wed Aug 5 12:02:40 1992 Steve Chamberlain (sac@thepub.cygnus.com) Wed Aug 5 01:54:34 1992 John Gilmore (gnu at cygnus.com) - * tc-m68k.c (try_index): Error if index scaling specified and + * config/tc-m68k.c (try_index): Error if index scaling specified and assembling for an older CPU than a 68020. Sat Aug 1 19:10:13 1992 Ken Raeburn (raeburn@cygnus.com) @@ -12785,7 +12792,7 @@ Mon Jul 13 14:11:36 1992 Steve Chamberlain (sac@thepub.cygnus.com) Mon Jul 6 17:09:32 1992 Steve Chamberlain (sac@cygnus.com) - * obj-coffbfd.c (fill_section): mark .lit sections as STYP_LIT + * config/obj-coffbfd.c (fill_section): mark .lit sections as STYP_LIT Mon Jun 1 16:20:22 1992 Michael Tiemann (tiemann@cygnus.com) @@ -12814,7 +12821,7 @@ Tue Jun 9 07:54:54 1992 Steve Chamberlain (sac@thepub.cygnus.com) * write.c (write_object_file): various changes to handle data in the BSS segment in much the same was as stuff in the DATA segment. - * tc-m68k.c (m68kip): Fix typo so that only arch's >=68020 do + * config/tc-m68k.c (m68kip): Fix typo so that only arch's >=68020 do pcrel data stuff. (md_estimate_size_before_relax): when relaxing a 68010 bxx into a bra+6 jmpxx, put the bytes of the jmp opcode into the right place. (s_bss): Don't put .bss stuff into SEG_DATA, put @@ -12853,7 +12860,7 @@ Thu May 28 11:22:02 1992 Jim Wilson (wilson@sphagnum.cygnus.com) * configure.in: Recognize sparclite as a sparc variant. - * tc-sparc.c: Use new ARCHITECTURES_CONFLICT_P macro. Mention new + * config/tc-sparc.c: Use new ARCHITECTURES_CONFLICT_P macro. Mention new -Asparclite flag. Tue May 26 16:47:56 1992 Steve Chamberlain (sac@thepub.cygnus.com) @@ -12867,9 +12874,9 @@ Thu May 14 17:22:48 1992 K. Richard Pixley (rich@rtl.cygnus.com) Mon May 4 18:56:19 1992 Steve Chamberlain (sac@thepub.cygnus.com) - * obj-coffbfd.c: use is a synonym for section, (do_relocs_for): + * config/obj-coffbfd.c: use is a synonym for section, (do_relocs_for): calc the base of relocs correctly. - * tc-a29k.c (parse_operand): allow expressions to be in any section. + * config/tc-a29k.c (parse_operand): allow expressions to be in any section. Mon Apr 27 13:13:31 1992 K. Richard Pixley (rich@cygnus.com) @@ -12923,8 +12930,8 @@ Fri Mar 13 08:03:03 1992 Steve Chamberlain (sac@thepub.cygnus.com) Thu Mar 12 04:42:38 1992 K. Richard Pixley (rich@cygnus.com) - * tc-m68k.h, te-sun3.h: moved LOCAL_LABELS_FB definition from - tc-m68k.h to te-sun3.h. + * config/tc-m68k.h, config/te-sun3.h: moved LOCAL_LABELS_FB + definition from tc-m68k.h to te-sun3.h. Wed Mar 11 23:32:42 1992 K. Richard Pixley (rich@cygnus.com) @@ -12936,7 +12943,7 @@ Wed Mar 11 23:32:42 1992 K. Richard Pixley (rich@cygnus.com) * symbols.c: remove local_labels_dollar, replace with a function interface for a sparse array. All users adjusted. - * te-sun3.h: add LOCAL_LABELS_DOLLAR. + * config/te-sun3.h: add LOCAL_LABELS_DOLLAR. Sat Mar 7 00:06:25 1992 K. Richard Pixley (rich@rtl.cygnus.com) @@ -13024,9 +13031,9 @@ Fri Feb 21 06:21:07 1992 K. Richard Pixley (rich@rtl.cygnus.com) * read.c, write.c subsegs.c: back out the .bss changes. - * obj-aout.c: do not include stab.gnu.h if NO_LISTING. + * config/obj-aout.c: do not include stab.gnu.h if NO_LISTING. - * tc-i860.c, a.out.gnu.h: move i860 relocs to a proper place. + * config/tc-i860.c, a.out.gnu.h: move i860 relocs to a proper place. * a.out.h: removed. @@ -13045,11 +13052,11 @@ Fri Feb 21 01:08:48 1992 Minh Tran-Le (TRANLE@INTELLICORP.COM) * as.c (perform_an_assembly_pass): zero bss_fix_root, too. - * tc-i386.c: tc-i386.c: added handling of the following opcodes: + * config/tc-i386.c: tc-i386.c: added handling of the following opcodes: i/o opcodes - inb, inw, outb and outw. string manipulation with att syntax - scmp, slod, smov, ssca, ssto. - * obj-coff.c: (for aix386) Moved the symbols .text, .data and .bss + * config/obj-coff.c: (for aix386) Moved the symbols .text, .data and .bss to just after .file . In obj_crawl_symbol_chain() where it tries to put the external @@ -13085,18 +13092,18 @@ Tue Feb 18 02:21:25 1992 K. Richard Pixley (rich at cygnus.com) * write.c: comment change only. - * tc-m88k.[hc]: pulled in from hack's unfinished work. These + * config/tc-m88k.[hc]: pulled in from hack's unfinished work. These aren't yet integrated. - * tc-i860.[hc]: blew off the dust. Something must still be done + * config/tc-i860.[hc]: blew off the dust. Something must still be done about conflicting relocation types. - * tc-ns32k.c: Replaced previous tc_aout_fix_to_chars stub with the + * config/tc-ns32k.c: Replaced previous tc_aout_fix_to_chars stub with the real thing. - * tc-i960.c, tc-sparc.c: white space and comments only. + * config/tc-i960.c, config/tc-sparc.c: white space and comments only. - * tc-a29k.h: delete duplicate macro definition. + * config/tc-a29k.h: delete duplicate macro definition. * new file atof-ns32k.c copied from hack's last unreleased gas. diff --git a/contrib/binutils/gas/ChangeLog-9697 b/contrib/binutils/gas/ChangeLog-9697 index 7b93733..7ffff3e 100644 --- a/contrib/binutils/gas/ChangeLog-9697 +++ b/contrib/binutils/gas/ChangeLog-9697 @@ -145,7 +145,7 @@ Mon Dec 1 20:24:18 1997 J"orn Rennecke <amylaar@cygnus.co.uk> Sat Nov 22 16:19:22 1997 Richard Henderson <rth@cygnus.com> - * tc-alpha.c (range_signed_16, range_signed_32): Work around an + * config/tc-alpha.c (range_signed_16, range_signed_32): Work around an apparent bug in gcc's long long support crossing from x86. Sat Nov 22 14:26:09 1997 Nick Clifton <nickc@cygnus.com> @@ -171,7 +171,7 @@ Thu Nov 20 15:06:08 1997 Richard Earnshaw <rearnsha@arm.com> Wed Nov 19 17:44:42 1997 Richard Henderson <rth@cygnus.com> - * tc-sh.c (parse_reg): Properly quote for fv4. + * config/tc-sh.c (parse_reg): Properly quote for fv4. Wed Nov 19 23:46:18 1997 Ian Lance Taylor <ian@cygnus.com> @@ -287,7 +287,7 @@ Tue Nov 4 16:35:57 1997 Ian Dall <Ian.Dall@dsto.defence.gov.au> Mon Nov 3 13:30:17 1997 Gavin Koch <gavin@cygnus.com> - * tc-mips.c (md_begin): Reorganize setting of default values so + * config/tc-mips.c (md_begin): Reorganize setting of default values so that mips_cpu depends on TARGET_CPU, and mips_opts.isa depends on mips_cpu. (md_parse_option): Remove all code that sets defaults; md_begin @@ -499,7 +499,7 @@ Thu Oct 9 15:17:50 1997 Ian Lance Taylor <ian@cygnus.com> Thu Oct 9 01:44:36 1997 J"orn Rennecke <amylaar@cygnus.co.uk> - * tc-d10v.h (TC_START_LABEL): Don't define. + * config/tc-d10v.h (TC_START_LABEL): Don't define. (tc_frob_label): Define. Thu Oct 9 00:07:23 1997 J"orn Rennecke <amylaar@cygnus.co.uk> @@ -941,7 +941,7 @@ Thu Aug 21 00:59:53 1997 Doug Evans <dje@canuck.cygnus.com> Wed Aug 20 00:45:20 1997 J"orn Rennecke <amylaar@cygnus.co.uk> - * tc-sh.c (parse_reg, get_specific, build_Mytes): Add SH4 + * config/tc-sh.c (parse_reg, get_specific, build_Mytes): Add SH4 floating point extensions. (parse_reg): parse sgr and dbr. @@ -1165,14 +1165,14 @@ Mon Jul 28 18:41:41 1997 Rob Savoye <rob@chinadoll.cygnus.com> Fri Jul 25 10:54:43 1997 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (md_apply_fix): Improve warnings for out of range + * config/tc-hppa.c (md_apply_fix): Improve warnings for out of range unconditional branches. (hppa_fix_adjustable): Don't adjust anything with a RR% or LR% field selector. Thu Jul 24 15:21:49 1997 Doug Evans <dje@canuck.cygnus.com> - * tc-sparc.c (md_begin): Cast sparc_opcodes to PTR for hash_insert. + * config/tc-sparc.c (md_begin): Cast sparc_opcodes to PTR for hash_insert. Thu Jul 24 17:51:29 1997 Ian Lance Taylor <ian@cygnus.com> @@ -1462,7 +1462,7 @@ Wed May 14 09:54:53 1997 Nick Clifton <nickc@cygnus.com> options -mapcs-32, -mapcs-26, -marmv2, -marmv2a, -marmv3, -marmv3m, -marmv4, -marmv4t. - * tc-arm.h (LOCAL_LABEL): Removed the definition of this macro + * config/tc-arm.h (LOCAL_LABEL): Removed the definition of this macro as it is never used. Tue May 13 22:26:14 1997 Jeffrey A Law (law@cygnus.com) @@ -2197,9 +2197,9 @@ Wed Feb 26 18:19:00 1997 Stan Shebs <shebs@andros.cygnus.com> * configure.in (mips*-*-lnews*): New target, also make empty emulation list for this target. * configure: Update. - * tc-mips.c (ECOFF_LITTLE_FORMAT): Define. + * config/tc-mips.c (ECOFF_LITTLE_FORMAT): Define. (mips_target_format): Use. - * te-lnews.h: New file. + * config/te-lnews.h: New file. Wed Feb 26 15:33:46 1997 Fred Fish <fnf@cygnus.com> @@ -2387,7 +2387,7 @@ Fri Feb 21 14:34:31 1997 Martin M. Hunt <hunt@pizza.cygnus.com> Fri Feb 21 10:08:25 1997 Jim Wilson <wilson@cygnus.com> - * tc-mips.c (mips_ip): If configured for an embedded ELF system, + * config/tc-mips.c (mips_ip): If configured for an embedded ELF system, don't set the section alignment to 2**4. Fri Feb 21 11:55:03 1997 Ian Lance Taylor <ian@cygnus.com> @@ -3713,12 +3713,12 @@ Thu Oct 3 00:16:50 1996 Jeffrey A Law (law@cygnus.com) Wed Oct 2 15:54:03 1996 Klaus Kaempf <kkaempf@progis.de> - * 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. + * config/obj-evax.h: move openvms definitions from here to tc-alpha.c. + * config/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 + * config/tc-alpha.h (TC_CONS_FIX_NEW): define Tue Oct 1 16:16:01 1996 Joel Sherrill <joel@oarcorp.com> @@ -3749,7 +3749,7 @@ Tue Oct 1 12:37:48 1996 Ian Lance Taylor <ian@cygnus.com> Tue Oct 1 09:36:19 1996 Stu Grossman (grossman@critters.cygnus.com) - * tc-v850.h: Define LOCAL_LABEL to recognise _.L_* symbols + * config/tc-v850.h: Define LOCAL_LABEL to recognise _.L_* symbols generated by DWARF. Sat Sep 28 03:38:08 1996 Ian Lance Taylor <ian@cygnus.com> @@ -4142,7 +4142,7 @@ Thu Aug 15 17:01:31 1996 James G. Smith <jsmith@cygnus.co.uk> Thu Aug 15 16:12:00 1996 Richard Earnshaw (rearnsha@armltd.co.uk) - * tc-arm.c (md_apply_fix3): Also set fixP->fx_done if fx_addsy is + * config/tc-arm.c (md_apply_fix3): Also set fixP->fx_done if fx_addsy is non-null, but is a constant. (fix_new_arm): Call make_expr_symbol to make the expression symbol so that error reporting will work correctly. @@ -4337,7 +4337,7 @@ Mon Jul 22 14:01:33 1996 Ian Lance Taylor <ian@cygnus.com> Mon Jul 22 12:46:55 1996 Richard Henderson <rth@tamu.edu> - * tc-alpha.c: Patches to track current minimum alignment to reduce + * config/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. @@ -4357,10 +4357,10 @@ Mon Jul 22 12:46:55 1996 Richard Henderson <rth@tamu.edu> 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. + * config/tc-alpha.h (md_flush_pending_output): Remove. (md_cons_align): Add. - * tc-alpha.c: Add oodles of function description comments. + * config/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. @@ -5320,7 +5320,7 @@ Mon Mar 11 09:59:53 1996 Steve Chamberlain <sac@slash.cygnus.com> * as.h (SEG_NORMAL, SEG_LIST): Bump segment limit from 10 to 40. (SEG_LAST): New. * subsegs.c (MANY_SEGMENTS): Increase segment limit. - * obj-coff.c (seg_N_TYPE, seg_info_off_by_4): Likewise. + * config/obj-coff.c (seg_N_TYPE, seg_info_off_by_4): Likewise. (do_relocs_for, w_symbols, obj_coff_add_segment, do_linenos_for, crawl_symbols, coff_header_append): Loop to SEG_LAST rather than SEG_E9. diff --git a/contrib/binutils/gas/ChangeLog-9899 b/contrib/binutils/gas/ChangeLog-9899 index a853b88..c2e4d89 100644 --- a/contrib/binutils/gas/ChangeLog-9899 +++ b/contrib/binutils/gas/ChangeLog-9899 @@ -1,3 +1,9 @@ +1999-12-27 Alan Modra <alan@spri.levels.unisa.edu.au> + + * config/tc-i386.c (MATCH): Relax JumpAbsolute check. Emit a + warning for absolute jump/call without `*' in non-intel mode. No + need to set i.types[0] JumpAbsolute in intel mode. + 1999-12-22 Philip Blundell <pb@futuretv.com> * config/tc-arm.c (arm_s_text): If OBJ_ELF, call the appropriate @@ -174,8 +180,8 @@ Wed Oct 27 16:50:44 1999 Don Lindsay <dlindsay@cygnus.com> Mon Oct 18 18:11:10 MDT 1999 Diego Novillo <dnovillo@cygnus.com> - * tc_d10v.c (find_opcode): Allow ATSIGN to match expressions of the - form @abs16, @(abs16) and @(abs16 + imm). + * config/tc-d10v.c (find_opcode): Allow ATSIGN to match + expressions of the form @abs16, @(abs16) and @(abs16 + imm). 1999-10-21 Gavin Romig-Koch <gavin@cygnus.com> @@ -379,7 +385,7 @@ Wed Sep 15 05:14:32 1999 Jeffrey A Law (law@cygnus.com) (md_assemble): Call dwarf2_where for OBJ_ELF. (pa_ip): Call dwarf2_gen_line_info for OBJ_ELF. (pa_end_of_source): New function. - * tc-hppa.h (md_end): Define for OBJ_ELF. + * config/tc-hppa.h (md_end): Define for OBJ_ELF. 1999-09-14 Michael Meissner <meissner@cygnus.com> @@ -1074,10 +1080,10 @@ Thu Jul 1 15:33:10 1999 Jeffrey A Law (law@cygnus.com) Mon Jun 21 16:45:19 1999 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (elf_hppa_reloc_type): Renamed from elf32_hppa_reloc_type. + * config/tc-hppa.c (elf_hppa_reloc_type): Renamed from elf32_hppa_reloc_type. (hppa_gen_reloc_type): Conditionalize on BFD64. (tc_gen_reloc): Re-enable ELF relocations. - * tc-hppa.h (TARGET_FORMAT): Handle elf64-hppa format. + * config/tc-hppa.h (TARGET_FORMAT): Handle elf64-hppa format. 1999-06-21 Ian Lance Taylor <ian@zembu.com> @@ -1099,7 +1105,7 @@ Mon Jun 21 16:45:19 1999 Jeffrey A Law (law@cygnus.com) Fri Jun 18 14:34:18 1999 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c: General cleanups of ELF support. No more spaces + * config/tc-hppa.c: General cleanups of ELF support. No more spaces and subspaces for ELF. (GDB_DEBUG_SPACE_NAME): Delete definition for ELF. (GDB_STRINGS_SUBSPACE_NAME): Likewise. @@ -1670,9 +1676,9 @@ Thu May 6 19:50:14 1999 Richard Henderson <rth@cygnus.com> 1999-05-05 Catherine Moore <clm@cygnus.com> - * tc-m68k.c: Include elf/m68k.h. + * config/tc-m68k.c: Include elf/m68k.h. (m68k_elf_final_processing): New routine. - * tc-m68k.h (elf_tc_final_processing m68k_elf_final_processing): + * config/tc-m68k.h (elf_tc_final_processing m68k_elf_final_processing): Define. Mon May 3 10:26:03 1999 Jeffrey A Law (law@cygnus.com) @@ -1772,7 +1778,7 @@ Fri Apr 16 12:26:39 1999 Bob Manson <manson@charmed.cygnus.com> Thu Apr 15 16:52:09 1999 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (pa_get_absolute_exression): Try to handle "5 %r3" + * config/tc-hppa.c (pa_get_absolute_exression): Try to handle "5 %r3" expressions correctly. @@ -1782,7 +1788,7 @@ Thu Apr 15 16:52:09 1999 Jeffrey A Law (law@cygnus.com) Mon Apr 12 23:45:07 1999 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (pa_ip, case '3'): New case for PA2.0 fmpyfadd + * config/tc-hppa.c (pa_ip, case '3'): New case for PA2.0 fmpyfadd and fmpynfadd instructions. 1999-04-11 Richard Henderson <rth@cygnus.com> @@ -1805,7 +1811,7 @@ Mon Apr 12 23:45:07 1999 Jeffrey A Law (law@cygnus.com) Sat Apr 10 20:10:02 1999 Richard Henderson <rth@cygnus.com> - * tc-alpha.c (load_expression): Call as_bad instead of abort. + * config/tc-alpha.c (load_expression): Call as_bad instead of abort. 1999-04-08 Nick Clifton <nickc@cygnus.com> @@ -1869,18 +1875,18 @@ Sat Apr 10 20:10:02 1999 Richard Henderson <rth@cygnus.com> Mon Mar 29 10:15:40 CST 1999 Catherine Moore <clm@cygnus.com> - * tc-mips.c (md_apply_fix): Adjust value for linkonce sections. + * config/tc-mips.c (md_apply_fix): Adjust value for linkonce sections. Wed Mar 24 14:11:10 1999 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Clean up code to + * config/tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Clean up code to detect ",n" without a condition. (pa_parse_neg_cmpsub_cmpltr): Likewise. Tue Mar 23 11:28:23 1999 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (pa_ip, case '~'): The condition for a branch on bit + * config/tc-hppa.c (pa_ip, case '~'): The condition for a branch on bit instruction is encoded with one bit. @@ -1897,16 +1903,16 @@ Tue Mar 23 11:28:23 1999 Jeffrey A Law (law@cygnus.com) Sun Mar 21 18:08:18 1999 Richard Henderson <rth@cygnus.com> - * tc-alpha.c (md_assemble): Allow '6' in an opcode. + * config/tc-alpha.c (md_assemble): Allow '6' in an opcode. Thu Mar 18 10:55:30 1999 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (pa_ip, case 'a'): Do not call pa_parse_..._cmpsub_cmpltr. + * config/tc-hppa.c (pa_ip, case 'a'): Do not call pa_parse_..._cmpsub_cmpltr. Thu Mar 18 02:30:07 1999 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (pa_ip, case 'd'): Do not allow ",n". + * config/tc-hppa.c (pa_ip, case 'd'): Do not allow ",n". 1999-03-15 Martin Hunt <hunt@cygnus.com> @@ -2602,9 +2608,9 @@ Wed Oct 7 14:09:14 1998 Nick Clifton <nickc@cygnus.com> Tue Oct 6 09:31:15 1998 Catherine Moore <clm@cygnus.com> - * tc-sparc.h (TC_FORCE_RELOCATION): Define. + * config/tc-sparc.h (TC_FORCE_RELOCATION): Define. (elf32_sparc_force_relocation): Declare. - * tc-sparc.c (md_apply_fix3): Handle vtable relocs. + * config/tc-sparc.c (md_apply_fix3): Handle vtable relocs. (tc_gen_reloc): Handle vtable relocs. (elf32_sparc_force_relocation): New. @@ -2622,7 +2628,7 @@ Mon Oct 5 09:25:32 1998 Catherine Moore <clm@cygnsu.com> Mon Oct 5 00:48:52 1998 Jeffrey A Law (law@cygnus.com) - * tc-hppa.c (fp_operand_format): Add some additional formats. + * config/tc-hppa.c (fp_operand_format): Add some additional formats. (pa_ip): Do not automatically promote into pa2.0 mode. (pa_level): Handle ".level 2.0". @@ -2843,8 +2849,8 @@ Wed Aug 19 09:30:16 1998 Nick Clifton <nickc@cygnus.com> Tue Aug 18 11:59:43 1998 Catherine Moore <clm@cygnus.com> - * tc-arm.h: Define obj_fix_adjustable for OBJ_ELF. - * tc-arm.c (arm_fix_adjustable): New routine. + * config/tc-arm.h: Define obj_fix_adjustable for OBJ_ELF. + * config/tc-arm.c (arm_fix_adjustable): New routine. 1998-08-13 Vladimir N. Makarov <vmakarov@cygnus.com> @@ -3194,7 +3200,7 @@ Thu Jul 2 16:24:58 1998 Ian Lance Taylor <ian@cygnus.com> Thu Jul 2 14:06:22 1998 Klaus Kaempf <kkaempf@rmi.de> - * obj-vms.c: Add C++ support with ctors/dtors sections. Add weak + * config/obj-vms.c: Add C++ support with ctors/dtors sections. Add weak symbol definitions. (Ctors_Symbols, Dtors_Symbols): New symbol chains. (ps_CTORS, ps_DTORS): New section types. @@ -3207,7 +3213,7 @@ Thu Jul 2 14:06:22 1998 Klaus Kaempf <kkaempf@rmi.de> (vms_write_object_file): Write Ctors_Symbols/Dtors_Symbols to appropriate section. - * tc-alpha.h (TARGET_FORMAT): Rename "evax-alpha" to "vms-alpha". + * config/tc-alpha.h (TARGET_FORMAT): Rename "evax-alpha" to "vms-alpha". * makefile.vms: Merge vax/vms support. Wed Jul 1 20:06:20 1998 Richard Henderson <rth@cygnus.com> @@ -3232,7 +3238,7 @@ Wed Jul 1 16:35:32 1998 Doug Evans <devans@seba.cygnus.com> Wed Jul 1 21:38:56 1998 J"orn Rennecke <amylaar@cygnus.co.uk> - * config/tc-sh (COND_JUMP_DELAY, COND12_DELAY_LENGTH): Define. + * config/tc-sh.c (COND_JUMP_DELAY, COND12_DELAY_LENGTH): Define. Changed all users of COND12_DELAY. Fri Jun 26 11:21:11 1998 Jeffrey A Law (law@cygnus.com) @@ -4414,7 +4420,7 @@ Fri Feb 20 15:03:13 1998 Ian Lance Taylor <ian@cygnus.com> Thu Feb 19 22:25:42 1998 Richard Henderson <rth@cygnus.com> - * tc-ppc.c (ppc_biei): Cache the last symbol we inserted + * config/tc-ppc.c (ppc_biei): Cache the last symbol we inserted so we don't have to scan the entire list. Tue Feb 17 17:02:15 1998 Fred Fish <fnf@cygnus.com> @@ -4487,7 +4493,7 @@ Wed Feb 11 23:26:28 1998 Jeffrey A Law (law@cygnus.com) Thu Feb 12 03:41:00 1998 J"orn Rennecke <amylaar@cygnus.co.uk> Fix rac to accept only a0: - * tc-d10v.c (parallel_ok, find_opcode): + * config/tc-d10v.c (parallel_ok, find_opcode): Split OPERAND_ACC into OPERAND_ACC0 and OPERAND_ACC1. Introduce OPERAND_GPR. @@ -4685,9 +4691,9 @@ Thu Jan 29 18:48:19 1998 Bill Moyer <billm@cygnus.com> Wed Jan 28 14:35:00 1998 Bill Moyer <billm@cygnus.com> * as.h (flag_warn_suppress_instructionswap): added new flag. - * tc-d10v.c (md_parse_option,md_longopts): added "--nowarnswap" + * config/tc-d10v.c (md_parse_option,md_longopts): added "--nowarnswap" command line argument. - * tc-d10v.c (write_2_short): emit "Swapping instructions" + * config/tc-d10v.c (write_2_short): emit "Swapping instructions" warning only if flag_warn_suppress_instructionswap is false. Wed Jan 28 16:41:19 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl> @@ -4797,20 +4803,20 @@ Fri Jan 16 14:51:48 1998 Ian Lance Taylor <ian@cygnus.com> Fri Jan 16 11:30:37 1998 Richard Henderson <rth@cygnus.com> - * tc-m68k.c (m68k_ip): Remove absl->reglst MRI hack. + * config/tc-m68k.c (m68k_ip): Remove absl->reglst MRI hack. (crack_operand): Add reg->reglst MRI hack. (r_seg): Put reglst symbols in reg_section. (m68k_frob_symbol): Frob reglst symbols into absolute_section. Thu Jan 15 14:19:01 1998 Richard Henderson <rth@cygnus.com> - * tc-sh.c (get_specific): Handle SGR & DBR. + * config/tc-sh.c (get_specific): Handle SGR & DBR. Thu Jan 15 13:46:48 1998 Richard Henderson <rth@cygnus.com> - * tc-h8300.c (parse_reg): Take the length of the symbol into + * config/tc-h8300.c (parse_reg): Take the length of the symbol into account when attempting to match a register name. - * tc-h8500.c (parse_reg): Likewise. + * config/tc-h8500.c (parse_reg): Likewise. Wed Jan 14 17:52:33 1998 Nick Clifton <nickc@cygnus.com> @@ -4838,7 +4844,7 @@ Mon Jan 12 13:04:57 1998 Doug Evans <devans@seba.cygnus.com> (expr_jmp_buf): New static local. (cgen_parse_operand): Allow use of longjmp in parsing to handle errors. (cgen_md_operand): New function. - * tc-m32r.c: Clean up pass over `struct foo' usage. + * config/tc-m32r.c: Clean up pass over `struct foo' usage. (md_estimate_size_before_relax): Use CGEN_INSN_MNEMONIC. Tue Jan 6 15:36:02 1998 Richard Henderson <rth@cygnus.com> diff --git a/contrib/binutils/gas/Makefile.am b/contrib/binutils/gas/Makefile.am index 357f3cf..304189d 100644 --- a/contrib/binutils/gas/Makefile.am +++ b/contrib/binutils/gas/Makefile.am @@ -60,11 +60,15 @@ CPU_TYPES = \ m88k \ mcore \ mips \ + mmix \ mn10200 \ mn10300 \ ns32k \ + openrisc \ + pdp11 \ pj \ ppc \ + s390 \ sh \ sparc \ tahoe \ @@ -74,6 +78,7 @@ CPU_TYPES = \ vax \ w65 \ v850 \ + xstormy16 \ z8k # Object format types. This is only used for dependency information. @@ -100,7 +105,7 @@ CPU_OBJ_VALID = \ case $$o in \ aout) \ case $$c in \ - a29k | arm | cris | i386 | m68k | mips | ns32k | sparc | tahoe | tic30 | vax) \ + a29k | arm | cris | i386 | m68k | mips | ns32k | pdp11 | sparc | tahoe | tic30 | vax) \ valid=yes ;; \ esac ;; \ bout) \ @@ -109,7 +114,7 @@ CPU_OBJ_VALID = \ esac ;; \ coff) valid=yes; \ case $$c in \ - cris | i860) \ + cris | i860 | mmix) \ valid= ;; \ esac ;; \ ecoff) \ @@ -241,11 +246,15 @@ TARGET_CPU_CFILES = \ config/tc-m88k.c \ config/tc-mcore.c \ config/tc-mips.c \ + config/tc-mmix.c \ config/tc-mn10200.c \ config/tc-mn10300.c \ config/tc-ns32k.c \ + config/tc-openrisc.c \ + config/tc-pdp11.c \ config/tc-pj.c \ config/tc-ppc.c \ + config/tc-s390.c \ config/tc-sh.c \ config/tc-sparc.c \ config/tc-tahoe.c \ @@ -255,6 +264,7 @@ TARGET_CPU_CFILES = \ config/tc-vax.c \ config/tc-w65.c \ config/tc-v850.c \ + config/tc-xstormy16.c \ config/tc-z8k.c TARGET_CPU_HFILES = \ @@ -281,11 +291,15 @@ TARGET_CPU_HFILES = \ config/tc-m88k.h \ config/tc-mcore.h \ config/tc-mips.h \ + config/tc-mmix.h \ config/tc-mn10200.h \ config/tc-mn10300.h \ config/tc-ns32k.h \ + config/tc-openrisc.h \ + config/tc-pdp11.h \ config/tc-pj.h \ config/tc-ppc.h \ + config/tc-s390.h \ config/tc-sh.h \ config/tc-sparc.h \ config/tc-tahoe.h \ @@ -295,6 +309,7 @@ TARGET_CPU_HFILES = \ config/tc-vax.h \ config/tc-w65.h \ config/tc-v850.h \ + config/tc-xstormy16.h \ config/tc-z8k.h # OBJ files in config @@ -340,6 +355,7 @@ TARG_ENV_HFILES = \ config/te-hppa64.h \ config/te-hppalinux64.h \ config/te-i386aix.h \ + config/te-ia64aix.h \ config/te-ic960.h \ config/te-linux.h \ config/te-lnews.h \ @@ -425,10 +441,8 @@ stamp-mk.com: vmsconf.sh Makefile $(SHELL) $(srcdir)/../move-if-change new-make.com $(srcdir)/make-gas.com touch stamp-mk.com -EXTRA_DIST = make-gas.com - -DISTSTUFF = make-gas.com m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c -diststuff: $(DISTSTUFF) info +EXTRA_DIST = make-gas.com m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c +diststuff: $(EXTRA_DIST) info DISTCLEANFILES = targ-cpu.h obj-format.h targ-env.h itbl-cpu.h cgen-desc.h @@ -451,6 +465,9 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR) # in a subdirectory. DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../../intl -DLOCALEDIR="\"$(prefix)/share/locale\"" +DEP_FLAGS = -DBFD_ASSEMBLER -DOBJ_MAYBE_ELF \ + -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) + # How to link with both our special library facilities # and the system's installed libraries. @@ -742,6 +759,8 @@ de-stage3: DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \ $(TARGET_CPU_HFILES) $(OBJ_FORMAT_CFILES) $(OBJ_FORMAT_HFILES) +Makefile: $(BFDDIR)/configure.in + # Automatic dependency computation. This is a real pain, because the # dependencies change based on target_cpu_type and obj_format. # Just to make things even more complicated, automake separates the @@ -779,7 +798,7 @@ DEP1: $(CFILES) $(MULTI_CFILES) echo '' > targ-env.h; \ echo '' > itbl-cpu.h; \ echo '' > itbl-parse.h; \ - $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) $? > DEP + $(MKDEP) $(DEP_FLAGS) $? > DEP mv -f DEPDIR/DEP $@ # Work out the special dependencies for the tc-*.c files. @@ -800,7 +819,7 @@ DEPTC: $(TARGET_CPU_CFILES) echo '#include "opcodes/'"$${c}"'-desc.h"' > cgen-desc.h; \ rm -f dummy.c; \ cp $${srcdir}/config/tc-$${c}.c dummy.c; \ - $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) dummy.c | \ + $(MKDEP) $(DEP_FLAGS) dummy.c | \ sed -e "s/dummy.o: dummy.c/DEPTC_$${c}_$${o} =/" >> ../DEPTCA; \ rm -f dummy.c; \ else true; fi; \ @@ -838,7 +857,7 @@ DEPOBJ: $(OBJ_FORMAT_CFILES) echo '' > itbl-parse.h; \ rm -f dummy.c; \ cp $${srcdir}/config/obj-$${o}.c dummy.c; \ - $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) dummy.c | \ + $(MKDEP) $(DEP_FLAGS) dummy.c | \ sed -e "s/dummy.o: dummy.c/DEPOBJ_$${c}_$${o} =/" >> ../DEPOBJA; \ rm -f dummy.c; \ else true; fi; \ @@ -873,7 +892,7 @@ DEP2: $(TARGET_CPU_HFILES) $(OBJ_FORMAT_HFILES) if [ x$${valid} = xyes ]; then \ echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \ echo '#include "obj-'"$${o}"'.h"' > dummy.c; \ - $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) dummy.c | \ + $(MKDEP) $(DEP_FLAGS) dummy.c | \ sed -e "s/dummy.o: dummy.c/DEP_$${c}_$${o} =/" >> ../DEP2A; \ else true; fi; \ done; \ @@ -921,359 +940,491 @@ dep-am: DEP .PHONY: dep dep-in dep-am AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -DEPTC_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h -DEPTC_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h -DEPTC_a29k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h $(INCDIR)/opcode/a29k.h -DEPTC_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h ecoff.h \ - $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c -DEPTC_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/alpha.h \ +DEPTC_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h +DEPTC_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h +DEPTC_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h +DEPTC_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ $(srcdir)/config/atof-vax.c -DEPTC_alpha_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h subsegs.h \ - $(INCDIR)/obstack.h struc-symbol.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/elf/alpha.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h $(srcdir)/config/atof-vax.c -DEPTC_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h \ +DEPTC_alpha_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ + $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ + $(srcdir)/config/atof-vax.c +DEPTC_alpha_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h \ subsegs.h $(INCDIR)/obstack.h struc-symbol.h ecoff.h \ - $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c -DEPTC_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - struc-symbol.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h \ - $(srcdir)/../opcodes/arc-ext.h $(INCDIR)/elf/arc.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_arc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h struc-symbol.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h \ - $(srcdir)/../opcodes/arc-ext.h $(INCDIR)/elf/arc.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h -DEPTC_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h -DEPTC_arm_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \ - dwarf2dbg.h -DEPTC_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h $(INCDIR)/opcode/alpha.h \ + $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \ + dwarf2dbg.h $(INCDIR)/safe-ctype.h $(srcdir)/config/atof-vax.c +DEPTC_alpha_evax = $(INCDIR)/symcat.h $(srcdir)/config/obj-evax.h \ + $(srcdir)/config/tc-alpha.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ + $(srcdir)/config/atof-vax.c +DEPTC_arc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/arc.h $(srcdir)/../opcodes/arc-ext.h \ + $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h +DEPTC_arc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h \ + struc-symbol.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/arc.h $(srcdir)/../opcodes/arc-ext.h \ + $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h +DEPTC_arm_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h +DEPTC_arm_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ + $(INCDIR)/obstack.h +DEPTC_arm_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h +DEPTC_avr_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h -DEPTC_avr_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h -DEPTC_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ +DEPTC_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/avr.h +DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/cris.h dwarf2dbg.h -DEPTC_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/cris.h dwarf2dbg.h -DEPTC_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_cris_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/cris.h dwarf2dbg.h +DEPTC_d10v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h \ $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h -DEPTC_d10v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h $(INCDIR)/elf/ppc.h \ - $(INCDIR)/elf/reloc-macros.h -DEPTC_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_d10v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/d10v.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h +DEPTC_d30v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h -DEPTC_d30v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h -DEPTC_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/fr30-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \ - cgen.h -DEPTC_fr30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/fr30-desc.h \ +DEPTC_d30v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/d30v.h +DEPTC_fr30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/fr30-desc.h \ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \ cgen.h -DEPTC_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h -DEPTC_h8300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h -DEPTC_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h -DEPTC_h8500_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h -DEPTC_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_fr30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/fr30-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/fr30-opc.h cgen.h +DEPTC_h8300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h \ + $(INCDIR)/safe-ctype.h +DEPTC_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h +DEPTC_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ + $(INCDIR)/safe-ctype.h +DEPTC_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ + $(INCDIR)/safe-ctype.h +DEPTC_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h -DEPTC_hppa_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h $(BFDDIR)/elf32-hppa.h \ - $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \ +DEPTC_hppa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ + $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/hppa.h \ dwarf2dbg.h -DEPTC_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_ia64_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ia64.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h -DEPTC_ia64_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h dwarf2dbg.h \ - subsegs.h $(INCDIR)/obstack.h -DEPTC_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_ia64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ + $(INCDIR)/safe-ctype.h dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h +DEPTC_i370_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h -DEPTC_i370_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h subsegs.h \ - $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h \ - $(INCDIR)/elf/i370.h -DEPTC_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ +DEPTC_i370_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/opcode/i370.h $(INCDIR)/elf/i370.h +DEPTC_i386_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ dwarf2dbg.h $(INCDIR)/opcode/i386.h -DEPTC_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h \ - $(INCDIR)/opcode/i386.h -DEPTC_i386_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h subsegs.h \ +DEPTC_i386_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/i386.h -DEPTC_i860_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h \ - $(INCDIR)/elf/reloc-macros.h -DEPTC_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h -DEPTC_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h -DEPTC_i960_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h \ +DEPTC_i386_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + dwarf2dbg.h $(INCDIR)/opcode/i386.h +DEPTC_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h +DEPTC_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ + $(srcdir)/config/tc-i960.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/i960.h -DEPTC_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \ - cgen.h -DEPTC_m32r_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \ +DEPTC_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h +DEPTC_i960_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h +DEPTC_m32r_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/m32r-desc.h \ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \ cgen.h -DEPTC_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h \ - dwarf2dbg.h -DEPTC_m68hc11_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h subsegs.h \ +DEPTC_m32r_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/m32r-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/m32r-opc.h cgen.h +DEPTC_m68hc11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m68hc11.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h -DEPTC_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h -DEPTC_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \ - $(srcdir)/config/m68k-parse.h -DEPTC_m68k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h $(INCDIR)/obstack.h \ - subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h \ - $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h -DEPTC_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \ +DEPTC_m68hc11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h +DEPTC_m68k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h subsegs.h \ + dwarf2dbg.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h +DEPTC_m68k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ + subsegs.h dwarf2dbg.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h +DEPTC_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h subsegs.h \ + dwarf2dbg.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h \ + $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h +DEPTC_m68k_hp300 = $(INCDIR)/symcat.h $(srcdir)/config/obj-hp300.h \ + $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ + $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/obstack.h subsegs.h dwarf2dbg.h $(INCDIR)/opcode/m68k.h \ $(srcdir)/config/m68k-parse.h -DEPTC_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h -DEPTC_m88k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h subsegs.h \ +DEPTC_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h -DEPTC_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h -DEPTC_mcore_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ - $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h -DEPTC_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ +DEPTC_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/config/m88k-opcode.h +DEPTC_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ + $(INCDIR)/safe-ctype.h +DEPTC_mcore_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h +DEPTC_mips_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ $(INCDIR)/opcode/mips.h itbl-ops.h $(srcdir)/config/obj-elf.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEPTC_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \ - itbl-ops.h $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h ecoff.h \ - $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEPTC_mips_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-mips.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \ - itbl-ops.h $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h -DEPTC_mips_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h itbl-ops.h \ - $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h ecoff.h \ - $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEPTC_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_mips_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/opcode/mips.h itbl-ops.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ + ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h +DEPTC_mips_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ + $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/mips.h itbl-ops.h \ + $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h +DEPTC_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/opcode/mips.h itbl-ops.h $(INCDIR)/elf/mips.h \ + $(INCDIR)/elf/reloc-macros.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h +DEPTC_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/mmix.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/mmix.h \ + $(INCDIR)/safe-ctype.h dwarf2dbg.h +DEPTC_mn10200_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h -DEPTC_mn10200_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h -DEPTC_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_mn10200_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/mn10200.h +DEPTC_mn10300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h \ dwarf2dbg.h -DEPTC_mn10300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h dwarf2dbg.h -DEPTC_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ns32k.h \ - $(INCDIR)/obstack.h -DEPTC_ns32k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_mn10300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/mn10300.h dwarf2dbg.h +DEPTC_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h -DEPTC_ns32k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h $(INCDIR)/opcode/ns32k.h \ +DEPTC_ns32k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ns32k.h \ $(INCDIR)/obstack.h -DEPTC_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_ns32k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h \ + $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h +DEPTC_openrisc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-openrisc.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/openrisc-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/openrisc-opc.h cgen.h +DEPTC_openrisc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/openrisc-desc.h \ + $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/openrisc-opc.h \ + cgen.h +DEPTC_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h +DEPTC_pdp11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-pdp11.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/opcode/pdp11.h +DEPTC_pdp11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h +DEPTC_pj_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ $(INCDIR)/opcode/pj.h -DEPTC_pj_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h $(INCDIR)/opcode/pj.h -DEPTC_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h -DEPTC_ppc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h $(INCDIR)/elf/ppc.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \ +DEPTC_pj_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pj.h +DEPTC_ppc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ppc.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/ppc.h +DEPTC_ppc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/ppc.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \ + dwarf2dbg.h +DEPTC_s390_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-s390.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/s390.h \ + $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h +DEPTC_s390_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/opcode/s390.h $(INCDIR)/elf/s390.h \ + $(INCDIR)/elf/reloc-macros.h +DEPTC_sh_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/sh.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \ - struc-symbol.h dwarf2dbg.h -DEPTC_sh_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h struc-symbol.h \ - $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/sparc.h -DEPTC_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h -DEPTC_sparc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h $(INCDIR)/elf/sparc.h \ + $(INCDIR)/safe-ctype.h struc-symbol.h dwarf2dbg.h +DEPTC_sh_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \ + $(INCDIR)/safe-ctype.h struc-symbol.h $(INCDIR)/elf/sh.h \ $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/tahoe.h -DEPTC_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_sparc_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/sparc.h +DEPTC_sparc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ + $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h +DEPTC_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/sparc.h $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \ + dwarf2dbg.h +DEPTC_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h +DEPTC_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tahoe_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/tahoe.h -DEPTC_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic30.h -DEPTC_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic30.h -DEPTC_tic30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h $(INCDIR)/opcode/tic30.h -DEPTC_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h sb.h macro.h \ +DEPTC_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h +DEPTC_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h +DEPTC_tic30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h +DEPTC_tic30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h +DEPTC_tic54x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic54x.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h sb.h macro.h \ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/tic54x.h -DEPTC_tic54x_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h sb.h \ - macro.h subsegs.h $(INCDIR)/obstack.h struc-symbol.h \ - $(INCDIR)/opcode/tic54x.h $(srcdir)/config/obj-coff.h \ +DEPTC_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ + $(INCDIR)/safe-ctype.h sb.h macro.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/opcode/tic54x.h $(srcdir)/config/obj-coff.h \ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ $(BFDDIR)/libcoff.h -DEPTC_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic80.h -DEPTC_tic80_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h $(INCDIR)/opcode/tic80.h -DEPTC_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h -DEPTC_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h -DEPTC_vax_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h -DEPTC_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h -DEPTC_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \ +DEPTC_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h +DEPTC_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h +DEPTC_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h \ + $(INCDIR)/safe-ctype.h +DEPTC_vax_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(srcdir)/config/vax-inst.h \ + $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h $(INCDIR)/safe-ctype.h +DEPTC_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ + $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h \ + $(INCDIR)/safe-ctype.h +DEPTC_vax_vms = $(INCDIR)/symcat.h $(srcdir)/config/obj-vms.h \ + $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \ + $(INCDIR)/aout/stab.def $(srcdir)/config/vax-inst.h \ + $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h $(INCDIR)/safe-ctype.h +DEPTC_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h -DEPTC_w65_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h -DEPTC_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h +DEPTC_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-v850.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h \ dwarf2dbg.h -DEPTC_v850_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h dwarf2dbg.h -DEPTC_z8k_coff = $(srcdir)/../opcodes/z8k-opc.h $(srcdir)/config/obj-coff.h \ +DEPTC_v850_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/v850.h dwarf2dbg.h +DEPTC_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/xstormy16-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/xstormy16-opc.h cgen.h +DEPTC_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/xstormy16-desc.h \ + $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/xstormy16-opc.h \ + cgen.h +DEPTC_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEPTC_z8k_elf = $(srcdir)/../opcodes/z8k-opc.h $(srcdir)/config/obj-elf.h \ + $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/z8k-opc.h +DEPTC_z8k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h \ + $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/z8k-opc.h DEPTC_hppa_som = $(srcdir)/config/tc-hppa.h subsegs.h \ $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h \ $(BFDDIR)/som.h @@ -1282,322 +1433,441 @@ DEPTC_i386_multi = $(DEPTC_i386_aout) $(DEPTC_i386_coff) \ DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \ $(DEPTC_mips_elf) DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf) -DEPOBJ_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_a29k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \ +DEPOBJ_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_alpha_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ + $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h +DEPOBJ_alpha_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(BFDDIR)/libecoff.h -DEPOBJ_alpha_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h subsegs.h \ - $(INCDIR)/obstack.h ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/aout/aout64.h -DEPOBJ_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h -DEPOBJ_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - struc-symbol.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_arc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h struc-symbol.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_arm_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_avr_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_d10v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPOBJ_alpha_evax = $(INCDIR)/symcat.h $(srcdir)/config/obj-evax.h \ + $(srcdir)/config/tc-alpha.h +DEPOBJ_arc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \ $(INCDIR)/obstack.h subsegs.h -DEPOBJ_d30v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_fr30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \ +DEPOBJ_arc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h \ + struc-symbol.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_arm_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_arm_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_h8300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \ +DEPOBJ_arm_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_avr_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_cris_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_d10v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_d10v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_d30v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_d30v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_fr30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_fr30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_h8300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_h8500_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_hppa_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h $(BFDDIR)/elf32-hppa.h \ - $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_ia64_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_i370_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/elf/i370.h $(INCDIR)/aout/aout64.h -DEPOBJ_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \ +DEPOBJ_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_i386_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_i860_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/obstack.h -DEPOBJ_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h \ +DEPOBJ_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_hppa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ + $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_ia64_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ia64.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_ia64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_i370_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_i370_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/elf/i370.h $(INCDIR)/aout/aout64.h +DEPOBJ_i386_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_i386_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_i960_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPOBJ_i386_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ + $(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h +DEPOBJ_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m32r_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m68hc11_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_i960_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_m32r_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_m32r_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_m68hc11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m68hc11.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m68k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(srcdir)/config/obj-aout.h \ +DEPOBJ_m68hc11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_m68k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_m68k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m88k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_mcore_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \ +DEPOBJ_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/symcat.h \ + $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ $(INCDIR)/obstack.h -DEPOBJ_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \ +DEPOBJ_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h +DEPOBJ_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h +DEPOBJ_mcore_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_mips_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_mips_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_mips_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-mips.h \ +DEPOBJ_mips_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ + $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h +DEPOBJ_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(BFDDIR)/libecoff.h -DEPOBJ_mips_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h subsegs.h \ - $(INCDIR)/obstack.h ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/aout/aout64.h -DEPOBJ_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_mn10200_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_mn10300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_ns32k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_ns32k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPOBJ_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_mn10200_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_mn10200_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_mn10300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_mn10300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_ns32k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_ns32k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_openrisc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-openrisc.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_openrisc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_pdp11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-pdp11.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_pdp11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_pj_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_pj_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_ppc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ppc.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ $(INCDIR)/obstack.h subsegs.h -DEPOBJ_pj_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h \ +DEPOBJ_ppc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/aout/aout64.h +DEPOBJ_s390_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-s390.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_s390_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_sh_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/sh.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_ppc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \ +DEPOBJ_sh_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/aout/aout64.h -DEPOBJ_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \ +DEPOBJ_sparc_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_sparc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_sh_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \ +DEPOBJ_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_tic30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_sparc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tahoe_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \ +DEPOBJ_tic30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_tic54x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic54x.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ +DEPOBJ_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h +DEPOBJ_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_vax_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ subsegs.h -DEPOBJ_tic54x_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic80_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h -DEPOBJ_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_vax_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def subsegs.h \ +DEPOBJ_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_vax_vms = $(INCDIR)/symcat.h $(srcdir)/config/obj-vms.h \ + $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \ + $(INCDIR)/aout/stab.def $(INCDIR)/safe-ctype.h subsegs.h \ $(INCDIR)/obstack.h -DEPOBJ_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \ +DEPOBJ_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_w65_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h -DEPOBJ_v850_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-v850.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_v850_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h +DEPOBJ_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_z8k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_z8k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h DEPOBJ_hppa_som = $(srcdir)/config/obj-som.h subsegs.h \ $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(BFDDIR)/som.h \ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def @@ -1609,241 +1879,287 @@ DEPOBJ_cris_multi = $(DEPOBJ_cris_aout) $(DEPOBJ_cris_elf) DEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h DEP_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h DEP_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \ ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEP_alpha_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h +DEP_alpha_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h DEP_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h DEP_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_arc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_arc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h DEP_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_arm_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_arm_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h DEP_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_avr_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_avr_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h +DEP_cris_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h DEP_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_d10v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_d10v_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h DEP_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_d30v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_d30v_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h DEP_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_fr30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h -DEP_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h -DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h +DEP_fr30_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h +DEP_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h DEP_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_hppa_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h $(BFDDIR)/elf32-hppa.h \ - $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_hppa_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ + $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ + $(INCDIR)/elf/reloc-macros.h DEP_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_ia64_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h +DEP_ia64_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h DEP_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_i370_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_i370_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h DEP_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_i386_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h -DEP_i860_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_i386_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h +DEP_i860_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h DEP_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h DEP_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_i960_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_i960_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h DEP_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_m32r_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h -DEP_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h -DEP_m68hc11_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h +DEP_m32r_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h +DEP_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_m68hc11_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h DEP_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h DEP_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h DEP_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_mcore_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_mcore_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h DEP_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h DEP_mips_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-mips.h \ ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEP_mips_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h +DEP_mips_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h +DEP_mmix_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h DEP_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_mn10200_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_mn10200_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h DEP_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_mn10300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_mn10300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h DEP_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_ns32k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_ns32k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_ns32k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h +DEP_openrisc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-openrisc.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_openrisc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h +DEP_pdp11_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-pdp11.h \ + $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h +DEP_pdp11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pdp11.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_pdp11_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h DEP_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_pj_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_pj_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h DEP_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_ppc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h +DEP_s390_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-s390.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h -DEP_ppc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h +DEP_s390_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h DEP_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_sh_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_sh_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h DEP_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h DEP_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h DEP_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_tic30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_tic30_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h DEP_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h \ + $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h DEP_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_vax_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_vax_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h DEP_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def DEP_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h -DEP_w65_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_w65_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h DEP_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_v850_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h -DEP_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_v850_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h +DEP_xstormy16_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-xstormy16.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h -DEP_z8k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h +DEP_xstormy16_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h +DEP_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_z8k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h DEP_hppa_som = $(BFDDIR)/som.h DEP_i386_multi = $(DEP_i386_aout) $(DEP_i386_coff) \ $(DEP_i386_elf) @@ -1852,49 +2168,62 @@ DEP_mips_multi = $(DEP_mips_coff) $(DEP_mips_ecoff) \ DEP_cris_multi = $(DEP_cris_aout) $(DEP_cris_elf) BMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE. #MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -app.o: app.c -as.o: as.c subsegs.h $(INCDIR)/obstack.h output-file.h \ - sb.h macro.h dwarf2dbg.h -atof-generic.o: atof-generic.c -bignum-copy.o: bignum-copy.c -cond.o: cond.c macro.h sb.h $(INCDIR)/obstack.h -depend.o: depend.c -dwarf2dbg.o: dwarf2dbg.c dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h \ +app.o: app.c $(INCDIR)/symcat.h +as.o: as.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ + output-file.h sb.h macro.h dwarf2dbg.h +atof-generic.o: atof-generic.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h +bignum-copy.o: bignum-copy.c $(INCDIR)/symcat.h +cond.o: cond.c $(INCDIR)/symcat.h macro.h sb.h $(INCDIR)/obstack.h +depend.o: depend.c $(INCDIR)/symcat.h +dwarf2dbg.o: dwarf2dbg.c $(INCDIR)/symcat.h dwarf2dbg.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h +ecoff.o: ecoff.c $(INCDIR)/symcat.h ecoff.h +ehopt.o: ehopt.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/elf/dwarf2.h -ecoff.o: ecoff.c ecoff.h -ehopt.o: ehopt.c subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h -expr.o: expr.c $(INCDIR)/obstack.h -flonum-copy.o: flonum-copy.c +expr.o: expr.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/obstack.h +flonum-copy.o: flonum-copy.c $(INCDIR)/symcat.h flonum-konst.o: flonum-konst.c flonum-mult.o: flonum-mult.c -frags.o: frags.c subsegs.h $(INCDIR)/obstack.h -hash.o: hash.c $(INCDIR)/obstack.h -input-file.o: input-file.c input-file.h -input-scrub.o: input-scrub.c input-file.h sb.h -listing.o: listing.c input-file.h subsegs.h -literal.o: literal.c subsegs.h $(INCDIR)/obstack.h -macro.o: macro.c sb.h macro.h -messages.o: messages.c -output-file.o: output-file.c output-file.h -read.o: read.c subsegs.h $(INCDIR)/obstack.h sb.h macro.h \ - ecoff.h +frags.o: frags.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h +hash.o: hash.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/obstack.h +input-file.o: input-file.c $(INCDIR)/symcat.h input-file.h \ + $(INCDIR)/safe-ctype.h +input-scrub.o: input-scrub.c $(INCDIR)/symcat.h input-file.h \ + sb.h +listing.o: listing.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + input-file.h subsegs.h +literal.o: literal.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h +macro.o: macro.c $(INCDIR)/safe-ctype.h sb.h macro.h +messages.o: messages.c $(INCDIR)/symcat.h +output-file.o: output-file.c $(INCDIR)/symcat.h output-file.h +read.o: read.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h sb.h macro.h ecoff.h sb.o: sb.c sb.h -stabs.o: stabs.c $(INCDIR)/obstack.h subsegs.h ecoff.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def -subsegs.o: subsegs.c subsegs.h $(INCDIR)/obstack.h -symbols.o: symbols.c $(INCDIR)/obstack.h subsegs.h \ - struc-symbol.h -write.o: write.c subsegs.h $(INCDIR)/obstack.h output-file.h \ - dwarf2dbg.h -gasp.o: gasp.c sb.h macro.h -itbl-ops.o: itbl-ops.c itbl-ops.h -e-crisaout.o: $(srcdir)/config/e-crisaout.c emul-target.h -e-criself.o: $(srcdir)/config/e-criself.c emul-target.h -e-i386aout.o: $(srcdir)/config/e-i386aout.c emul-target.h -e-i386coff.o: $(srcdir)/config/e-i386coff.c emul-target.h -e-i386elf.o: $(srcdir)/config/e-i386elf.c emul-target.h -e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c emul-target.h -e-mipself.o: $(srcdir)/config/e-mipself.c emul-target.h +stabs.o: stabs.c $(INCDIR)/symcat.h $(INCDIR)/obstack.h \ + subsegs.h ecoff.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def +subsegs.o: subsegs.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h +symbols.o: symbols.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/obstack.h subsegs.h struc-symbol.h +write.o: write.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ + output-file.h dwarf2dbg.h +gasp.o: gasp.c $(INCDIR)/safe-ctype.h sb.h macro.h +itbl-ops.o: itbl-ops.c itbl-ops.h $(INCDIR)/symcat.h +e-crisaout.o: $(srcdir)/config/e-crisaout.c $(INCDIR)/symcat.h \ + emul-target.h +e-criself.o: $(srcdir)/config/e-criself.c $(INCDIR)/symcat.h \ + emul-target.h +e-i386aout.o: $(srcdir)/config/e-i386aout.c $(INCDIR)/symcat.h \ + emul-target.h +e-i386coff.o: $(srcdir)/config/e-i386coff.c $(INCDIR)/symcat.h \ + emul-target.h +e-i386elf.o: $(srcdir)/config/e-i386elf.c $(INCDIR)/symcat.h \ + emul-target.h +e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c $(INCDIR)/symcat.h \ + emul-target.h +e-mipself.o: $(srcdir)/config/e-mipself.c $(INCDIR)/symcat.h \ + emul-target.h $(OBJS): $(DEP_@target_cpu_type@_@obj_format@) $(TARG_CPU_O): $(DEPTC_@target_cpu_type@_@obj_format@) $(OBJ_FORMAT_O): $(DEPOBJ_@target_cpu_type@_@obj_format@) diff --git a/contrib/binutils/gas/Makefile.in b/contrib/binutils/gas/Makefile.in index 0e001a6..5664979 100644 --- a/contrib/binutils/gas/Makefile.in +++ b/contrib/binutils/gas/Makefile.in @@ -171,11 +171,15 @@ CPU_TYPES = \ m88k \ mcore \ mips \ + mmix \ mn10200 \ mn10300 \ ns32k \ + openrisc \ + pdp11 \ pj \ ppc \ + s390 \ sh \ sparc \ tahoe \ @@ -185,6 +189,7 @@ CPU_TYPES = \ vax \ w65 \ v850 \ + xstormy16 \ z8k @@ -213,7 +218,7 @@ CPU_OBJ_VALID = \ case $$o in \ aout) \ case $$c in \ - a29k | arm | cris | i386 | m68k | mips | ns32k | sparc | tahoe | tic30 | vax) \ + a29k | arm | cris | i386 | m68k | mips | ns32k | pdp11 | sparc | tahoe | tic30 | vax) \ valid=yes ;; \ esac ;; \ bout) \ @@ -222,7 +227,7 @@ CPU_OBJ_VALID = \ esac ;; \ coff) valid=yes; \ case $$c in \ - cris | i860) \ + cris | i860 | mmix) \ valid= ;; \ esac ;; \ ecoff) \ @@ -358,11 +363,15 @@ TARGET_CPU_CFILES = \ config/tc-m88k.c \ config/tc-mcore.c \ config/tc-mips.c \ + config/tc-mmix.c \ config/tc-mn10200.c \ config/tc-mn10300.c \ config/tc-ns32k.c \ + config/tc-openrisc.c \ + config/tc-pdp11.c \ config/tc-pj.c \ config/tc-ppc.c \ + config/tc-s390.c \ config/tc-sh.c \ config/tc-sparc.c \ config/tc-tahoe.c \ @@ -372,6 +381,7 @@ TARGET_CPU_CFILES = \ config/tc-vax.c \ config/tc-w65.c \ config/tc-v850.c \ + config/tc-xstormy16.c \ config/tc-z8k.c @@ -399,11 +409,15 @@ TARGET_CPU_HFILES = \ config/tc-m88k.h \ config/tc-mcore.h \ config/tc-mips.h \ + config/tc-mmix.h \ config/tc-mn10200.h \ config/tc-mn10300.h \ config/tc-ns32k.h \ + config/tc-openrisc.h \ + config/tc-pdp11.h \ config/tc-pj.h \ config/tc-ppc.h \ + config/tc-s390.h \ config/tc-sh.h \ config/tc-sparc.h \ config/tc-tahoe.h \ @@ -413,6 +427,7 @@ TARGET_CPU_HFILES = \ config/tc-vax.h \ config/tc-w65.h \ config/tc-v850.h \ + config/tc-xstormy16.h \ config/tc-z8k.h @@ -461,6 +476,7 @@ TARG_ENV_HFILES = \ config/te-hppa64.h \ config/te-hppalinux64.h \ config/te-i386aix.h \ + config/te-ia64aix.h \ config/te-ic960.h \ config/te-linux.h \ config/te-lnews.h \ @@ -542,9 +558,7 @@ noinst_PROGRAMS = as-new gasp-new noinst_SCRIPTS = $(GDBINIT) EXTRA_SCRIPTS = .gdbinit -EXTRA_DIST = make-gas.com - -DISTSTUFF = make-gas.com m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c +EXTRA_DIST = make-gas.com m68k-parse.c itbl-parse.c itbl-parse.h itbl-lex.c DISTCLEANFILES = targ-cpu.h obj-format.h targ-env.h itbl-cpu.h cgen-desc.h @@ -567,6 +581,10 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR) # in a subdirectory. DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../../intl -DLOCALEDIR="\"$(prefix)/share/locale\"" +DEP_FLAGS = -DBFD_ASSEMBLER -DOBJ_MAYBE_ELF \ + -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) + + # How to link with both our special library facilities # and the system's installed libraries. @@ -628,449 +646,591 @@ DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \ AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -DEPTC_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h - -DEPTC_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h +DEPTC_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h -DEPTC_a29k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h $(INCDIR)/opcode/a29k.h +DEPTC_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h -DEPTC_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h ecoff.h \ - $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c +DEPTC_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h -DEPTC_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ - subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/alpha.h \ +DEPTC_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ $(srcdir)/config/atof-vax.c -DEPTC_alpha_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h subsegs.h \ - $(INCDIR)/obstack.h struc-symbol.h ecoff.h $(INCDIR)/coff/sym.h \ - $(INCDIR)/coff/ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/elf/alpha.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h $(srcdir)/config/atof-vax.c +DEPTC_alpha_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ + $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ + $(srcdir)/config/atof-vax.c -DEPTC_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h \ +DEPTC_alpha_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h \ subsegs.h $(INCDIR)/obstack.h struc-symbol.h ecoff.h \ - $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c - -DEPTC_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - struc-symbol.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h \ - $(srcdir)/../opcodes/arc-ext.h $(INCDIR)/elf/arc.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h + $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h $(INCDIR)/opcode/alpha.h \ + $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \ + dwarf2dbg.h $(INCDIR)/safe-ctype.h $(srcdir)/config/atof-vax.c -DEPTC_arc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h struc-symbol.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h \ - $(srcdir)/../opcodes/arc-ext.h $(INCDIR)/elf/arc.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h +DEPTC_alpha_evax = $(INCDIR)/symcat.h $(srcdir)/config/obj-evax.h \ + $(srcdir)/config/tc-alpha.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(INCDIR)/safe-ctype.h \ + $(srcdir)/config/atof-vax.c -DEPTC_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h +DEPTC_arc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/arc.h $(srcdir)/../opcodes/arc-ext.h \ + $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h +DEPTC_arc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h \ + struc-symbol.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/arc.h $(srcdir)/../opcodes/arc-ext.h \ + $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h + +DEPTC_arm_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h + +DEPTC_arm_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ + $(INCDIR)/obstack.h -DEPTC_arm_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \ - dwarf2dbg.h +DEPTC_arm_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_avr_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h -DEPTC_avr_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h +DEPTC_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/avr.h -DEPTC_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ +DEPTC_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/cris.h dwarf2dbg.h -DEPTC_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/cris.h dwarf2dbg.h +DEPTC_cris_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/cris.h dwarf2dbg.h -DEPTC_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_d10v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h \ $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h -DEPTC_d10v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h $(INCDIR)/elf/ppc.h \ - $(INCDIR)/elf/reloc-macros.h +DEPTC_d10v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/d10v.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h -DEPTC_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_d30v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h -DEPTC_d30v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h - -DEPTC_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/fr30-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \ - cgen.h - -DEPTC_fr30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/fr30-desc.h \ +DEPTC_d30v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/d30v.h + +DEPTC_fr30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/fr30-desc.h \ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \ cgen.h -DEPTC_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h - -DEPTC_h8300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h +DEPTC_fr30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/fr30-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/fr30-opc.h cgen.h + +DEPTC_h8300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h \ + $(INCDIR)/safe-ctype.h + +DEPTC_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h -DEPTC_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h +DEPTC_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ + $(INCDIR)/safe-ctype.h -DEPTC_h8500_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h +DEPTC_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \ + $(INCDIR)/safe-ctype.h -DEPTC_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h -DEPTC_hppa_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h $(BFDDIR)/elf32-hppa.h \ - $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \ +DEPTC_hppa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ + $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/hppa.h \ dwarf2dbg.h -DEPTC_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_ia64_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ia64.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h -DEPTC_ia64_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h dwarf2dbg.h \ - subsegs.h $(INCDIR)/obstack.h +DEPTC_ia64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ + $(INCDIR)/safe-ctype.h dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h -DEPTC_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_i370_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h -DEPTC_i370_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h subsegs.h \ - $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h \ - $(INCDIR)/elf/i370.h +DEPTC_i370_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/opcode/i370.h $(INCDIR)/elf/i370.h -DEPTC_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ +DEPTC_i386_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ dwarf2dbg.h $(INCDIR)/opcode/i386.h -DEPTC_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h \ - $(INCDIR)/opcode/i386.h - -DEPTC_i386_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h subsegs.h \ +DEPTC_i386_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/i386.h -DEPTC_i860_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h \ - $(INCDIR)/elf/reloc-macros.h - -DEPTC_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h +DEPTC_i386_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + dwarf2dbg.h $(INCDIR)/opcode/i386.h -DEPTC_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h +DEPTC_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h -DEPTC_i960_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h \ +DEPTC_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ + $(srcdir)/config/tc-i960.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/i960.h -DEPTC_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \ - $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \ - cgen.h +DEPTC_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h + +DEPTC_i960_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h -DEPTC_m32r_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \ +DEPTC_m32r_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/m32r-desc.h \ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \ cgen.h -DEPTC_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h \ - dwarf2dbg.h - -DEPTC_m68hc11_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h subsegs.h \ +DEPTC_m32r_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/m32r-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/m32r-opc.h cgen.h + +DEPTC_m68hc11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m68hc11.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h -DEPTC_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h +DEPTC_m68hc11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h -DEPTC_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \ - $(srcdir)/config/m68k-parse.h +DEPTC_m68k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h subsegs.h \ + dwarf2dbg.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h -DEPTC_m68k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h $(INCDIR)/obstack.h \ - subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h \ +DEPTC_m68k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \ + subsegs.h dwarf2dbg.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h + +DEPTC_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h subsegs.h \ + dwarf2dbg.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h \ $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h -DEPTC_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \ +DEPTC_m68k_hp300 = $(INCDIR)/symcat.h $(srcdir)/config/obj-hp300.h \ + $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ + $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/obstack.h subsegs.h dwarf2dbg.h $(INCDIR)/opcode/m68k.h \ $(srcdir)/config/m68k-parse.h -DEPTC_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h - -DEPTC_m88k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h subsegs.h \ +DEPTC_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h -DEPTC_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h +DEPTC_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/config/m88k-opcode.h + +DEPTC_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ + $(INCDIR)/safe-ctype.h -DEPTC_mcore_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ - $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h +DEPTC_mcore_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h + +DEPTC_mips_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/opcode/mips.h itbl-ops.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ + ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEPTC_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ +DEPTC_mips_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ $(INCDIR)/opcode/mips.h itbl-ops.h $(srcdir)/config/obj-elf.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \ ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEPTC_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \ - itbl-ops.h $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h ecoff.h \ - $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h +DEPTC_mips_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ + $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/mips.h itbl-ops.h \ + $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h -DEPTC_mips_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-mips.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \ - itbl-ops.h $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h - -DEPTC_mips_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h itbl-ops.h \ - $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h ecoff.h \ - $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h - -DEPTC_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/opcode/mips.h itbl-ops.h $(INCDIR)/elf/mips.h \ + $(INCDIR)/elf/reloc-macros.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h + +DEPTC_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/mmix.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/mmix.h \ + $(INCDIR)/safe-ctype.h dwarf2dbg.h + +DEPTC_mn10200_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h -DEPTC_mn10200_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h +DEPTC_mn10200_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/mn10200.h -DEPTC_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_mn10300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h \ dwarf2dbg.h -DEPTC_mn10300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h dwarf2dbg.h +DEPTC_mn10300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/mn10300.h dwarf2dbg.h + +DEPTC_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h -DEPTC_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ns32k.h \ +DEPTC_ns32k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ns32k.h \ $(INCDIR)/obstack.h -DEPTC_ns32k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_ns32k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h \ $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h -DEPTC_ns32k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h $(INCDIR)/opcode/ns32k.h \ - $(INCDIR)/obstack.h +DEPTC_openrisc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-openrisc.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/openrisc-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/openrisc-opc.h cgen.h -DEPTC_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_openrisc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/openrisc-desc.h \ + $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/openrisc-opc.h \ + cgen.h + +DEPTC_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h + +DEPTC_pdp11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-pdp11.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/opcode/pdp11.h + +DEPTC_pdp11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h + +DEPTC_pj_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ $(INCDIR)/opcode/pj.h -DEPTC_pj_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h $(INCDIR)/opcode/pj.h +DEPTC_pj_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pj.h -DEPTC_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h +DEPTC_ppc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ppc.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/ppc.h -DEPTC_ppc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h $(INCDIR)/elf/ppc.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h +DEPTC_ppc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/ppc.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \ + dwarf2dbg.h + +DEPTC_s390_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-s390.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/s390.h \ + $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h + +DEPTC_s390_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/opcode/s390.h $(INCDIR)/elf/s390.h \ + $(INCDIR)/elf/reloc-macros.h -DEPTC_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \ +DEPTC_sh_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/sh.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \ - struc-symbol.h dwarf2dbg.h + $(INCDIR)/safe-ctype.h struc-symbol.h dwarf2dbg.h -DEPTC_sh_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h struc-symbol.h \ - $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h +DEPTC_sh_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \ + $(INCDIR)/safe-ctype.h struc-symbol.h $(INCDIR)/elf/sh.h \ + $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h -DEPTC_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ +DEPTC_sparc_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/sparc.h -DEPTC_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h +DEPTC_sparc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \ + $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h -DEPTC_sparc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h $(INCDIR)/elf/sparc.h \ - $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h +DEPTC_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/sparc.h $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \ + dwarf2dbg.h -DEPTC_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/tahoe.h +DEPTC_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tahoe_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h $(INCDIR)/obstack.h \ - $(INCDIR)/opcode/tahoe.h +DEPTC_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h -DEPTC_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic30.h +DEPTC_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h -DEPTC_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic30.h +DEPTC_tic30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h -DEPTC_tic30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h $(INCDIR)/opcode/tic30.h +DEPTC_tic30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h -DEPTC_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h sb.h macro.h \ +DEPTC_tic54x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic54x.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h sb.h macro.h \ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/tic54x.h -DEPTC_tic54x_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h sb.h \ - macro.h subsegs.h $(INCDIR)/obstack.h struc-symbol.h \ - $(INCDIR)/opcode/tic54x.h $(srcdir)/config/obj-coff.h \ +DEPTC_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ + $(INCDIR)/safe-ctype.h sb.h macro.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/opcode/tic54x.h $(srcdir)/config/obj-coff.h \ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ $(BFDDIR)/libcoff.h -DEPTC_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic80.h - -DEPTC_tic80_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h $(INCDIR)/opcode/tic80.h +DEPTC_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h -DEPTC_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h - -DEPTC_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h +DEPTC_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ + $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h -DEPTC_vax_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h +DEPTC_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h \ + $(INCDIR)/safe-ctype.h -DEPTC_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(srcdir)/config/vax-inst.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h +DEPTC_vax_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(srcdir)/config/vax-inst.h \ + $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h $(INCDIR)/safe-ctype.h -DEPTC_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \ +DEPTC_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ + $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h \ + $(INCDIR)/safe-ctype.h + +DEPTC_vax_vms = $(INCDIR)/symcat.h $(srcdir)/config/obj-vms.h \ + $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \ + $(INCDIR)/aout/stab.def $(srcdir)/config/vax-inst.h \ + $(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h $(INCDIR)/safe-ctype.h + +DEPTC_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h -DEPTC_w65_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h subsegs.h \ - $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h +DEPTC_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h -DEPTC_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPTC_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-v850.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h \ dwarf2dbg.h -DEPTC_v850_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h dwarf2dbg.h +DEPTC_v850_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/v850.h dwarf2dbg.h + +DEPTC_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/xstormy16-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/xstormy16-opc.h cgen.h + +DEPTC_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/xstormy16-desc.h \ + $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/xstormy16-opc.h \ + cgen.h -DEPTC_z8k_coff = $(srcdir)/../opcodes/z8k-opc.h $(srcdir)/config/obj-coff.h \ +DEPTC_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ - $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/z8k-opc.h -DEPTC_z8k_elf = $(srcdir)/../opcodes/z8k-opc.h $(srcdir)/config/obj-elf.h \ +DEPTC_z8k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h \ + $(INCDIR)/safe-ctype.h $(srcdir)/../opcodes/z8k-opc.h DEPTC_hppa_som = $(srcdir)/config/tc-hppa.h subsegs.h \ $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h \ @@ -1083,411 +1243,541 @@ DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \ $(DEPTC_mips_elf) DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf) -DEPOBJ_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_a29k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(BFDDIR)/libecoff.h +DEPOBJ_alpha_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ + $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h -DEPOBJ_alpha_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h subsegs.h \ - $(INCDIR)/obstack.h ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ +DEPOBJ_alpha_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/aout/aout64.h -DEPOBJ_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h -DEPOBJ_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - struc-symbol.h $(INCDIR)/obstack.h subsegs.h +DEPOBJ_alpha_evax = $(INCDIR)/symcat.h $(srcdir)/config/obj-evax.h \ + $(srcdir)/config/tc-alpha.h -DEPOBJ_arc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h struc-symbol.h \ - subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_arc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \ + $(INCDIR)/obstack.h subsegs.h -DEPOBJ_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_arc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h \ + struc-symbol.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \ +DEPOBJ_arm_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h + +DEPOBJ_arm_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_arm_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_arm_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_avr_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_avr_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_avr_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_cris_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_d10v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_d10v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_d10v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_d30v_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_d30v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_d30v_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_fr30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_fr30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_fr30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \ +DEPOBJ_h8300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_h8300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \ +DEPOBJ_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_h8500_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_hppa_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h $(BFDDIR)/elf32-hppa.h \ - $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \ +DEPOBJ_hppa_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ + $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/safe-ctype.h \ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h -DEPOBJ_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_ia64_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ia64.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_ia64_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_ia64_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_i370_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_i370_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/elf/i370.h $(INCDIR)/aout/aout64.h +DEPOBJ_i370_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/elf/i370.h $(INCDIR)/aout/aout64.h -DEPOBJ_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_i386_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \ +DEPOBJ_i386_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_i386_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_i386_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_i860_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/obstack.h +DEPOBJ_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \ + $(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h -DEPOBJ_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h +DEPOBJ_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/obstack.h subsegs.h -DEPOBJ_i960_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_i960_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_m32r_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_m32r_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_m32r_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_m68hc11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m68hc11.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m68hc11_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_m68hc11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_m68k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_m68k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m68k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m68k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(srcdir)/config/obj-aout.h \ - $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/symcat.h \ + $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ + $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ + $(INCDIR)/obstack.h -DEPOBJ_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_m88k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \ +DEPOBJ_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_mcore_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_mcore_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_mips_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \ +DEPOBJ_mips_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_mips_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-mips.h \ - ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(BFDDIR)/libecoff.h +DEPOBJ_mips_ecoff = $(INCDIR)/symcat.h $(srcdir)/config/obj-ecoff.h \ + $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \ + $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h -DEPOBJ_mips_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h subsegs.h \ - $(INCDIR)/obstack.h ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ +DEPOBJ_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \ $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/aout/aout64.h -DEPOBJ_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_mn10200_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_mn10200_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_mn10200_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_mn10300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_mn10300_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_mn10300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_ns32k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_ns32k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_ns32k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h + +DEPOBJ_ns32k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h + +DEPOBJ_openrisc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-openrisc.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ +DEPOBJ_openrisc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h + +DEPOBJ_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h + +DEPOBJ_pdp11_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-pdp11.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h + +DEPOBJ_pdp11_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h + +DEPOBJ_pj_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h + +DEPOBJ_pj_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h + +DEPOBJ_ppc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-ppc.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ $(INCDIR)/obstack.h subsegs.h -DEPOBJ_pj_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_ppc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/aout/aout64.h -DEPOBJ_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h +DEPOBJ_s390_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-s390.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_ppc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \ +DEPOBJ_s390_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/aout/aout64.h -DEPOBJ_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \ +DEPOBJ_sh_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/sh.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_sh_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_sh_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_sparc_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \ +DEPOBJ_sparc_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/sparc.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_sparc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_tahoe_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \ +DEPOBJ_tic30_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_tic30_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ - subsegs.h +DEPOBJ_tic54x_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic54x.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic54x_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \ +DEPOBJ_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_tic80_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ - $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \ - $(INCDIR)/obstack.h +DEPOBJ_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h -DEPOBJ_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_vax_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_vax_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def subsegs.h \ +DEPOBJ_vax_vms = $(INCDIR)/symcat.h $(srcdir)/config/obj-vms.h \ + $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \ + $(INCDIR)/aout/stab.def $(INCDIR)/safe-ctype.h subsegs.h \ $(INCDIR)/obstack.h -DEPOBJ_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \ +DEPOBJ_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_w65_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ - $(INCDIR)/obstack.h subsegs.h +DEPOBJ_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-v850.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h -DEPOBJ_v850_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_v850_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h -DEPOBJ_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h \ +DEPOBJ_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h + +DEPOBJ_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h + +DEPOBJ_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h -DEPOBJ_z8k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h subsegs.h \ - $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h +DEPOBJ_z8k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h DEPOBJ_hppa_som = $(srcdir)/config/obj-som.h subsegs.h \ $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(BFDDIR)/som.h \ @@ -1504,328 +1794,384 @@ DEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h +DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h DEP_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h DEP_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \ ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEP_alpha_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h +DEP_alpha_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-alpha.h DEP_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h DEP_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_arc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h +DEP_arc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arc.h DEP_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_arm_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h +DEP_arm_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-arm.h DEP_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_avr_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h +DEP_avr_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h -DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h +DEP_cris_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cris.h DEP_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_d10v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h +DEP_d10v_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d10v.h DEP_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_d30v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h +DEP_d30v_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-d30v.h DEP_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_fr30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h +DEP_fr30_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-fr30.h DEP_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h +DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h DEP_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h +DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_hppa_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h $(BFDDIR)/elf32-hppa.h \ - $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h +DEP_hppa_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-hppa.h \ + $(BFDDIR)/elf32-hppa.h $(BFDDIR)/libhppa.h $(INCDIR)/elf/hppa.h \ + $(INCDIR)/elf/reloc-macros.h DEP_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_ia64_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h +DEP_ia64_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ia64.h DEP_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_i370_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h +DEP_i370_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i370.h DEP_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_i386_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h +DEP_i386_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i386.h -DEP_i860_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h +DEP_i860_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h DEP_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h DEP_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_i960_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h +DEP_i960_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i960.h DEP_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_m32r_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h +DEP_m32r_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m32r.h DEP_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_m68hc11_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h +DEP_m68hc11_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68hc11.h DEP_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h +DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h DEP_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h +DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h DEP_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_mcore_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h +DEP_mcore_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mcore.h DEP_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h DEP_mips_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-mips.h \ ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h -DEP_mips_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h +DEP_mips_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h + +DEP_mmix_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mmix.h DEP_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_mn10200_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h +DEP_mn10200_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10200.h DEP_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_mn10300_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h +DEP_mn10300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mn10300.h DEP_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_ns32k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ns32k.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_ns32k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h +DEP_ns32k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ns32k.h + +DEP_openrisc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-openrisc.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h + +DEP_openrisc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h + +DEP_pdp11_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-pdp11.h \ + $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h + +DEP_pdp11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pdp11.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h + +DEP_pdp11_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pdp11.h DEP_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_pj_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h +DEP_pj_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-pj.h DEP_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + +DEP_ppc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h + +DEP_s390_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-s390.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h -DEP_ppc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-ppc.h +DEP_s390_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-s390.h DEP_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_sh_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h +DEP_sh_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sh.h DEP_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h +DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h DEP_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h +DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h DEP_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic30_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h +DEP_tic30_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic30.h DEP_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h \ + $(INCDIR)/coff/ti.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h +DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h +DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h DEP_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_vax_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h +DEP_vax_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h DEP_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def DEP_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \ - $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h -DEP_w65_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h +DEP_w65_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h DEP_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \ - $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h -DEP_v850_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h +DEP_v850_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h -DEP_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h \ +DEP_xstormy16_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-xstormy16.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ $(INCDIR)/bfdlink.h -DEP_z8k_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \ - $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ - $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h +DEP_xstormy16_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h + +DEP_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h \ + $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + +DEP_z8k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h DEP_hppa_som = $(BFDDIR)/som.h DEP_i386_multi = $(DEP_i386_aout) $(DEP_i386_coff) \ @@ -2281,7 +2627,7 @@ stamp-mk.com: vmsconf.sh Makefile sh $(srcdir)/vmsconf.sh $(GENERIC_OBJS) > new-make.com $(SHELL) $(srcdir)/../move-if-change new-make.com $(srcdir)/make-gas.com touch stamp-mk.com -diststuff: $(DISTSTUFF) info +diststuff: $(EXTRA_DIST) info $(OBJS): @ALL_OBJ_DEPS@ @@ -2520,6 +2866,8 @@ de-stage3: - (cd stage3 ; rm -f as$(EXEEXT) ; mv -f * ..) - rmdir stage3 +Makefile: $(BFDDIR)/configure.in + # Automatic dependency computation. This is a real pain, because the # dependencies change based on target_cpu_type and obj_format. # Just to make things even more complicated, automake separates the @@ -2557,7 +2905,7 @@ DEP1: $(CFILES) $(MULTI_CFILES) echo '' > targ-env.h; \ echo '' > itbl-cpu.h; \ echo '' > itbl-parse.h; \ - $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) $? > DEP + $(MKDEP) $(DEP_FLAGS) $? > DEP mv -f DEPDIR/DEP $@ # Work out the special dependencies for the tc-*.c files. @@ -2578,7 +2926,7 @@ DEPTC: $(TARGET_CPU_CFILES) echo '#include "opcodes/'"$${c}"'-desc.h"' > cgen-desc.h; \ rm -f dummy.c; \ cp $${srcdir}/config/tc-$${c}.c dummy.c; \ - $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) dummy.c | \ + $(MKDEP) $(DEP_FLAGS) dummy.c | \ sed -e "s/dummy.o: dummy.c/DEPTC_$${c}_$${o} =/" >> ../DEPTCA; \ rm -f dummy.c; \ else true; fi; \ @@ -2616,7 +2964,7 @@ DEPOBJ: $(OBJ_FORMAT_CFILES) echo '' > itbl-parse.h; \ rm -f dummy.c; \ cp $${srcdir}/config/obj-$${o}.c dummy.c; \ - $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) dummy.c | \ + $(MKDEP) $(DEP_FLAGS) dummy.c | \ sed -e "s/dummy.o: dummy.c/DEPOBJ_$${c}_$${o} =/" >> ../DEPOBJA; \ rm -f dummy.c; \ else true; fi; \ @@ -2651,7 +2999,7 @@ DEP2: $(TARGET_CPU_HFILES) $(OBJ_FORMAT_HFILES) if [ x$${valid} = xyes ]; then \ echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \ echo '#include "obj-'"$${o}"'.h"' > dummy.c; \ - $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) dummy.c | \ + $(MKDEP) $(DEP_FLAGS) dummy.c | \ sed -e "s/dummy.o: dummy.c/DEP_$${c}_$${o} =/" >> ../DEP2A; \ else true; fi; \ done; \ @@ -2698,49 +3046,62 @@ dep-am: DEP # ANYTHING CHANGED OR ADDED BETWEEN THE WARNING LINES MAY GO AWAY. .PHONY: dep dep-in dep-am #MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW. -app.o: app.c -as.o: as.c subsegs.h $(INCDIR)/obstack.h output-file.h \ - sb.h macro.h dwarf2dbg.h -atof-generic.o: atof-generic.c -bignum-copy.o: bignum-copy.c -cond.o: cond.c macro.h sb.h $(INCDIR)/obstack.h -depend.o: depend.c -dwarf2dbg.o: dwarf2dbg.c dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h \ +app.o: app.c $(INCDIR)/symcat.h +as.o: as.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ + output-file.h sb.h macro.h dwarf2dbg.h +atof-generic.o: atof-generic.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h +bignum-copy.o: bignum-copy.c $(INCDIR)/symcat.h +cond.o: cond.c $(INCDIR)/symcat.h macro.h sb.h $(INCDIR)/obstack.h +depend.o: depend.c $(INCDIR)/symcat.h +dwarf2dbg.o: dwarf2dbg.c $(INCDIR)/symcat.h dwarf2dbg.h \ + subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h +ecoff.o: ecoff.c $(INCDIR)/symcat.h ecoff.h +ehopt.o: ehopt.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/elf/dwarf2.h -ecoff.o: ecoff.c ecoff.h -ehopt.o: ehopt.c subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h -expr.o: expr.c $(INCDIR)/obstack.h -flonum-copy.o: flonum-copy.c +expr.o: expr.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/obstack.h +flonum-copy.o: flonum-copy.c $(INCDIR)/symcat.h flonum-konst.o: flonum-konst.c flonum-mult.o: flonum-mult.c -frags.o: frags.c subsegs.h $(INCDIR)/obstack.h -hash.o: hash.c $(INCDIR)/obstack.h -input-file.o: input-file.c input-file.h -input-scrub.o: input-scrub.c input-file.h sb.h -listing.o: listing.c input-file.h subsegs.h -literal.o: literal.c subsegs.h $(INCDIR)/obstack.h -macro.o: macro.c sb.h macro.h -messages.o: messages.c -output-file.o: output-file.c output-file.h -read.o: read.c subsegs.h $(INCDIR)/obstack.h sb.h macro.h \ - ecoff.h +frags.o: frags.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h +hash.o: hash.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/obstack.h +input-file.o: input-file.c $(INCDIR)/symcat.h input-file.h \ + $(INCDIR)/safe-ctype.h +input-scrub.o: input-scrub.c $(INCDIR)/symcat.h input-file.h \ + sb.h +listing.o: listing.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + input-file.h subsegs.h +literal.o: literal.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h +macro.o: macro.c $(INCDIR)/safe-ctype.h sb.h macro.h +messages.o: messages.c $(INCDIR)/symcat.h +output-file.o: output-file.c $(INCDIR)/symcat.h output-file.h +read.o: read.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + subsegs.h $(INCDIR)/obstack.h sb.h macro.h ecoff.h sb.o: sb.c sb.h -stabs.o: stabs.c $(INCDIR)/obstack.h subsegs.h ecoff.h \ - $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def -subsegs.o: subsegs.c subsegs.h $(INCDIR)/obstack.h -symbols.o: symbols.c $(INCDIR)/obstack.h subsegs.h \ - struc-symbol.h -write.o: write.c subsegs.h $(INCDIR)/obstack.h output-file.h \ - dwarf2dbg.h -gasp.o: gasp.c sb.h macro.h -itbl-ops.o: itbl-ops.c itbl-ops.h -e-crisaout.o: $(srcdir)/config/e-crisaout.c emul-target.h -e-criself.o: $(srcdir)/config/e-criself.c emul-target.h -e-i386aout.o: $(srcdir)/config/e-i386aout.c emul-target.h -e-i386coff.o: $(srcdir)/config/e-i386coff.c emul-target.h -e-i386elf.o: $(srcdir)/config/e-i386elf.c emul-target.h -e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c emul-target.h -e-mipself.o: $(srcdir)/config/e-mipself.c emul-target.h +stabs.o: stabs.c $(INCDIR)/symcat.h $(INCDIR)/obstack.h \ + subsegs.h ecoff.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def +subsegs.o: subsegs.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h +symbols.o: symbols.c $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/obstack.h subsegs.h struc-symbol.h +write.o: write.c $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h \ + output-file.h dwarf2dbg.h +gasp.o: gasp.c $(INCDIR)/safe-ctype.h sb.h macro.h +itbl-ops.o: itbl-ops.c itbl-ops.h $(INCDIR)/symcat.h +e-crisaout.o: $(srcdir)/config/e-crisaout.c $(INCDIR)/symcat.h \ + emul-target.h +e-criself.o: $(srcdir)/config/e-criself.c $(INCDIR)/symcat.h \ + emul-target.h +e-i386aout.o: $(srcdir)/config/e-i386aout.c $(INCDIR)/symcat.h \ + emul-target.h +e-i386coff.o: $(srcdir)/config/e-i386coff.c $(INCDIR)/symcat.h \ + emul-target.h +e-i386elf.o: $(srcdir)/config/e-i386elf.c $(INCDIR)/symcat.h \ + emul-target.h +e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c $(INCDIR)/symcat.h \ + emul-target.h +e-mipself.o: $(srcdir)/config/e-mipself.c $(INCDIR)/symcat.h \ + emul-target.h $(OBJS): $(DEP_@target_cpu_type@_@obj_format@) $(TARG_CPU_O): $(DEPTC_@target_cpu_type@_@obj_format@) $(OBJ_FORMAT_O): $(DEPOBJ_@target_cpu_type@_@obj_format@) diff --git a/contrib/binutils/gas/NEWS b/contrib/binutils/gas/NEWS index 6c3439d..950f63b 100644 --- a/contrib/binutils/gas/NEWS +++ b/contrib/binutils/gas/NEWS @@ -1,4 +1,21 @@ -*- text -*- +The ARM assembler now accepts -march=..., -mcpu=... and -mfpu=... for +specifying the target instruction set. The old method of specifying the +target processor has been deprecated, but is still accepted for +compatibility. + +Support for the VFP floating-point instruction set has been added to +the ARM assembler. + +New psuedo op: .incbin to include a set of binary data at a given point +in the assembly. Contributed by Anders Norlander. + +The MIPS assembler now accepts -march/-mtune. -mcpu has been deprecated +but still works for compatability. + +The MIPS assembler no longer issues a warning by default when it +generates a nop instruction from a macro. The new command line option +-n will turn on the warning. Changes in 2.11: diff --git a/contrib/binutils/gas/README b/contrib/binutils/gas/README index 87666df..ef12d3f 100644 --- a/contrib/binutils/gas/README +++ b/contrib/binutils/gas/README @@ -1,10 +1,10 @@ README for GAS -A number of things have changed since version 1 and the wonderful world of gas -looks very different. There's still a lot of irrelevant garbage lying around -that will be cleaned up in time. Documentation is scarce, as are logs of the -changes made since the last gas release. My apologies, and I'll try to get -something useful. +A number of things have changed since version 1 and the wonderful +world of gas looks very different. There's still a lot of irrelevant +garbage lying around that will be cleaned up in time. Documentation +is scarce, as are logs of the changes made since the last gas release. +My apologies, and I'll try to get something useful. Unpacking and Installation - Summary ==================================== @@ -31,7 +31,7 @@ system. You can rebuild it by typing: make as.dvi The Info form is viewable with the GNU Emacs `info' subsystem, or the -standalone `info' program, available as part of the GNU Texinfo distribution. +stand-alone `info' program, available as part of the GNU Texinfo distribution. To build the info files, you will need the `makeinfo' program. Type: cd gas/doc @@ -142,7 +142,7 @@ The `--enable' options recognized by software in the gas distribution are: Supported platforms =================== -At this point I believe gas to be ansi only code for most target cpu's. That +At this point I believe gas to be ANSI only code for most target cpu's. That is, there should be relatively few, if any host system dependencies. So porting (as a cross-assembler) to hosts not yet supported should be fairly easy. Porting to a new target shouldn't be too tough if it's a variant of one @@ -173,9 +173,10 @@ Native assembling should work on: sparc solaris ns32k (netbsd, lites) -I believe that gas as a cross-assembler can currently be targetted for +I believe that gas as a cross-assembler can currently be targeted for most of the above hosts, plus + arm decstation-bsd (a.out format, to be used in BSD 4.4) ebmon29k go32 (DOS on i386, with DJGPP -- old a.out version) @@ -202,7 +203,7 @@ run gcc on it. Or run "gcc -xassembler-with-cpp foo.s". Support for ELF should work now for sparc, hppa, i386, alpha, m68k, MIPS, powerpc. -Support for sequent (ns32k), tahoe, i860, m88k may be suffering from bitrot. +Support for sequent (ns32k), tahoe, i860 may be suffering from bitrot. If you try out gas on some host or target not listed above, please let me know the results, so I can update the list. @@ -229,10 +230,13 @@ warning message when this happens. REPORTING BUGS IN GAS ===================== -Bugs in gas should be reported to bug-binutils@gnu.org. They may be -cross-posted to bug-gcc if they affect the use of gas with gcc. They -should not be reported just to bug-gcc, since I don't read that list, -and therefore wouldn't see them. +Bugs in gas should be reported to: + + bug-gnu-utils@gnu.org. + +They may be cross-posted to gcc-bugs@gnu.org if they affect the use of +gas with gcc. They should not be reported just to gcc-bugs, since not +all of the maintainers read that list. If you report a bug in GAS, please remember to include: @@ -265,7 +269,7 @@ does demonstrate the problem; but if paring it down would cause large delays in filing the bug report, don't bother. If the input file is very large, and you are on the internet, you may want to -make it avaliable for anonymous FTP instead of mailing it. If you do, include +make it available for anonymous FTP instead of mailing it. If you do, include instructions for FTP'ing it in your bug report. If you expect to be contributing a large number of test cases, it would be diff --git a/contrib/binutils/gas/app.c b/contrib/binutils/gas/app.c index 5111598..ba587d4 100644 --- a/contrib/binutils/gas/app.c +++ b/contrib/binutils/gas/app.c @@ -78,9 +78,11 @@ static const char symbol_chars[] = #ifdef DOUBLEBAR_PARALLEL #define LEX_IS_DOUBLEBAR_1ST 13 #endif +#define LEX_IS_PARALLEL_SEPARATOR 14 #define IS_SYMBOL_COMPONENT(c) (lex[c] == LEX_IS_SYMBOL_COMPONENT) #define IS_WHITESPACE(c) (lex[c] == LEX_IS_WHITESPACE) #define IS_LINE_SEPARATOR(c) (lex[c] == LEX_IS_LINE_SEPARATOR) +#define IS_PARALLEL_SEPARATOR(c) (lex[c] == LEX_IS_PARALLEL_SEPARATOR) #define IS_COMMENT(c) (lex[c] == LEX_IS_COMMENT_START) #define IS_LINE_COMMENT(c) (lex[c] == LEX_IS_LINE_COMMENT_START) #define IS_NEWLINE(c) (lex[c] == LEX_IS_NEWLINE) @@ -164,6 +166,15 @@ do_scrub_begin (m68k_mri) lex[(unsigned char) *p] = LEX_IS_LINE_SEPARATOR; } /* declare line separators */ +#ifdef tc_parallel_separator_chars + /* This macro permits the processor to specify all characters which + separate parallel insns on the same line. */ + for (p = tc_parallel_separator_chars; *p; p++) + { + lex[(unsigned char) *p] = LEX_IS_PARALLEL_SEPARATOR; + } /* declare parallel separators */ +#endif + /* Only allow slash-star comments if slash is not in use. FIXME: This isn't right. We should always permit them. */ if (lex['/'] == 0) @@ -376,7 +387,7 @@ do_scrub_chars (get, tostart, tolen) /* I added states 9 and 10 because the MIPS ECOFF assembler uses constructs like ``.loc 1 20''. This was turning into ``.loc 120''. States 9 and 10 ensure that a space is never dropped in - between characters which could appear in a identifier. Ian + between characters which could appear in an identifier. Ian Taylor, ian@cygnus.com. I added state 11 so that something like "Lfoo add %r25,%r26,%r27" works @@ -555,7 +566,7 @@ do_scrub_chars (get, tostart, tolen) ch = GET (); if (ch == EOF) { - as_warn (_("end of file in string: inserted '\"'")); + as_warn (_("end of file in string; inserted '\"'")); state = old_state; UNGET ('\n'); PUT ('"'); @@ -621,7 +632,7 @@ do_scrub_chars (get, tostart, tolen) break; #if defined(IGNORE_NONSTANDARD_ESCAPES) | defined(ONLY_STANDARD_ESCAPES) default: - as_warn (_("Unknown escape '\\%c' in string: Ignored"), ch); + as_warn (_("unknown escape '\\%c' in string; ignored"), ch); break; #else /* ONLY_STANDARD_ESCAPES */ default: @@ -630,7 +641,7 @@ do_scrub_chars (get, tostart, tolen) #endif /* ONLY_STANDARD_ESCAPES */ case EOF: - as_warn (_("End of file in string: '\"' inserted")); + as_warn (_("end of file in string; '\"' inserted")); PUT ('"'); continue; } @@ -796,7 +807,8 @@ do_scrub_chars (get, tostart, tolen) #endif if (IS_COMMENT (ch) || ch == '/' - || IS_LINE_SEPARATOR (ch)) + || IS_LINE_SEPARATOR (ch) + || IS_PARALLEL_SEPARATOR (ch)) { if (scrub_m68k_mri) { @@ -992,7 +1004,7 @@ do_scrub_chars (get, tostart, tolen) if ((ch = GET ()) != '\'') { #ifdef REQUIRE_CHAR_CLOSE_QUOTE - as_warn (_("Missing close quote: (assumed)")); + as_warn (_("missing close quote; (assumed)")); #else if (ch != EOF) UNGET (ch); @@ -1039,6 +1051,11 @@ do_scrub_chars (get, tostart, tolen) PUT (ch); break; + case LEX_IS_PARALLEL_SEPARATOR: + state = 1; + PUT (ch); + break; + #ifdef TC_V850 case LEX_IS_DOUBLEDASH_1ST: ch2 = GET (); @@ -1119,7 +1136,7 @@ do_scrub_chars (get, tostart, tolen) while (ch != EOF && !IS_NEWLINE (ch)) ch = GET (); if (ch == EOF) - as_warn (_("EOF in Comment: Newline inserted")); + as_warn (_("end of file in comment; newline inserted")); state = 0; PUT ('\n'); break; diff --git a/contrib/binutils/gas/as.c b/contrib/binutils/gas/as.c index e8c2212..dab04e9 100644 --- a/contrib/binutils/gas/as.c +++ b/contrib/binutils/gas/as.c @@ -1,6 +1,6 @@ /* as.c - GAS main program. Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001 + 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -208,7 +208,7 @@ print_version_id () #ifdef BFD_ASSEMBLER fprintf (stderr, _("GNU assembler version %s (%s) using BFD version %s"), - VERSION, TARGET_ALIAS, BFD_VERSION); + VERSION, TARGET_ALIAS, BFD_VERSION_STRING); #else fprintf (stderr, _("GNU assembler version %s (%s)"), VERSION, TARGET_ALIAS); #endif @@ -524,8 +524,8 @@ parse_args (pargc, pargv) case OPTION_VERSION: /* This output is intended to follow the GNU standards document. */ - printf (_("GNU assembler %s\n"), VERSION); - printf (_("Copyright 2001 Free Software Foundation, Inc.\n")); + printf (_("GNU assembler %s\n"), BFD_VERSION_STRING); + printf (_("Copyright 2002 Free Software Foundation, Inc.\n")); printf (_("\ This program is free software; you may redistribute it under the terms of\n\ the GNU General Public License. This program has absolutely no warranty.\n")); @@ -587,7 +587,7 @@ the GNU General Public License. This program has absolutely no warranty.\n")); if (optarg == NULL) { - as_warn (_("No file name following -t option\n")); + as_warn (_("no file name following -t option")); break; } @@ -602,11 +602,8 @@ the GNU General Public License. This program has absolutely no warranty.\n")); internal table. */ itbl_files->name = xstrdup (optarg); if (itbl_parse (itbl_files->name) != 0) - { - fprintf (stderr, _("Failed to read instruction table %s\n"), - itbl_files->name); - exit (EXIT_SUCCESS); - } + as_fatal (_("failed to read instruction table %s\n"), + itbl_files->name); } break; @@ -765,10 +762,16 @@ the GNU General Public License. This program has absolutely no warranty.\n")); *pargc = new_argc; *pargv = new_argv; + +#ifdef md_after_parse_args + md_after_parse_args (); +#endif } static long start_time; +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -783,6 +786,9 @@ main (argc, argv) #if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES) setlocale (LC_MESSAGES, ""); #endif +#if defined (HAVE_SETLOCALE) + setlocale (LC_CTYPE, ""); +#endif bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); diff --git a/contrib/binutils/gas/as.h b/contrib/binutils/gas/as.h index 75abfa9..ed82574 100644 --- a/contrib/binutils/gas/as.h +++ b/contrib/binutils/gas/as.h @@ -43,28 +43,19 @@ /* This is the code recommended in the autoconf documentation, almost verbatim. If it doesn't work for you, let me know, and notify djm@gnu.ai.mit.edu as well. */ -/* Added #undef for DJ Delorie. The right fix is to ensure that as.h - is included first, before even any system header files, in all files - that use it. KR 1994.11.03 */ /* Added void* version for STDC case. This is to be compatible with the declaration in bison.simple, used for m68k operand parsing. --KR 1995.08.08 */ /* Force void* decl for hpux. This is what Bison uses. --KR 1995.08.16 */ -/* AIX requires this to be the first thing in the file. */ -#ifdef __GNUC__ -# ifndef alloca -# ifdef __STDC__ -extern void *alloca (); -# else -extern char *alloca (); -# endif -# endif -#else +#ifndef __GNUC__ # if HAVE_ALLOCA_H # include <alloca.h> # else # ifdef _AIX +/* Indented so that pre-ansi C compilers will ignore it, rather than + choke on it. Some versions of AIX require this to be the first + thing in the file. */ #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ @@ -76,13 +67,12 @@ extern void *alloca (); # endif /* alloca */ # endif /* _AIX */ # endif /* HAVE_ALLOCA_H */ -#endif +#endif /* __GNUC__ */ /* Now, tend to the rest of the configuration. */ /* System include files first... */ #include <stdio.h> -#include <ctype.h> #ifdef HAVE_STRING_H #include <string.h> #else diff --git a/contrib/binutils/gas/atof-generic.c b/contrib/binutils/gas/atof-generic.c index 1309566..c5d10d4 100644 --- a/contrib/binutils/gas/atof-generic.c +++ b/contrib/binutils/gas/atof-generic.c @@ -1,5 +1,5 @@ /* atof_generic.c - turn a string of digits into a Flonum - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000 + Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -19,10 +19,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include <ctype.h> #include <string.h> #include "as.h" +#include "safe-ctype.h" #ifndef FALSE #define FALSE (0) @@ -171,7 +171,7 @@ atof_generic (address_of_string_pointer, && (!c || !strchr (string_of_decimal_exponent_marks, c))); p++) { - if (isdigit ((unsigned char) c)) + if (ISDIGIT (c)) { if (seen_significant_digit || c > '0') { @@ -200,7 +200,7 @@ atof_generic (address_of_string_pointer, { unsigned int zeros = 0; /* Length of current string of zeros */ - for (p++; (c = *p) && isdigit ((unsigned char) c); p++) + for (p++; (c = *p) && ISDIGIT (c); p++) { if (c == '0') { @@ -221,7 +221,7 @@ atof_generic (address_of_string_pointer, && (!c || !strchr (string_of_decimal_exponent_marks, c))); p++) { - if (isdigit ((unsigned char) c)) + if (ISDIGIT (c)) { /* This may be retracted below. */ number_of_digits_after_decimal++; @@ -275,7 +275,7 @@ atof_generic (address_of_string_pointer, for (; (c); c = *++p) { - if (isdigit ((unsigned char) c)) + if (ISDIGIT (c)) { decimal_exponent = decimal_exponent * 10 + c - '0'; /* @@ -400,7 +400,7 @@ atof_generic (address_of_string_pointer, for (p = first_digit, count = number_of_digits_to_use; count; p++, --count) { c = *p; - if (isdigit ((unsigned char) c)) + if (ISDIGIT (c)) { /* * Multiply by 10. Assume can never overflow. @@ -434,7 +434,7 @@ atof_generic (address_of_string_pointer, * We have a GROSS internal error. * This should never happen. */ - as_fatal (_("failed sanity check.")); + as_fatal (_("failed sanity check")); } } else diff --git a/contrib/binutils/gas/bit_fix.h b/contrib/binutils/gas/bit_fix.h index 3eedb3c..80c0022 100644 --- a/contrib/binutils/gas/bit_fix.h +++ b/contrib/binutils/gas/bit_fix.h @@ -1,5 +1,5 @@ /* bit_fix.h - Copyright 1987, 1992, 2000 Free Software Foundation, Inc. + Copyright 1987, 1992, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -26,8 +26,8 @@ The or-mask is used to set the huffman bits in displacements for the ns32k port. The acbi, addqi, movqi, cmpqi instruction requires an assembler that - can handle bitfields. Ie handle an expression, evaluate it and insert - the result in an some bitfield. ( ex: 5 bits in a short field of a opcode) + can handle bitfields. Ie. handle an expression, evaluate it and insert + the result in some bitfield. (eg: 5 bits in a short field of an opcode) */ #ifndef __bit_fix_h__ diff --git a/contrib/binutils/gas/cgen.c b/contrib/binutils/gas/cgen.c index 759b382..75138a45 100644 --- a/contrib/binutils/gas/cgen.c +++ b/contrib/binutils/gas/cgen.c @@ -29,6 +29,8 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "cgen.h" #include "dwarf2dbg.h" +static void queue_fixup PARAMS ((int, int, expressionS *)); + /* Opcode table descriptor, must be set by md_begin. */ CGEN_CPU_DESC gas_cgen_cpu_desc; @@ -94,61 +96,118 @@ queue_fixup (opindex, opinfo, expP) ++ num_fixups; } -/* The following three functions allow a backup of the fixup chain to be made, - and to have this backup be swapped with the current chain. This allows - certain ports, eg the m32r, to swap two instructions and swap their fixups - at the same time. */ -/* ??? I think with cgen_asm_finish_insn (or something else) there is no - more need for this. */ +/* The following functions allow fixup chains to be stored, retrieved, + and swapped. They are a generalization of a pre-existing scheme + for storing, restoring and swapping fixup chains that was used by + the m32r port. The functionality is essentially the same, only + instead of only being able to store a single fixup chain, an entire + array of fixup chains can be stored. It is the user's responsibility + to keep track of how many fixup chains have been stored and which + elements of the array they are in. + + The algorithms used are the same as in the old scheme. Other than the + "array-ness" of the whole thing, the functionality is identical to the + old scheme. + + gas_cgen_initialize_saved_fixups_array(): + Sets num_fixups_in_chain to 0 for each element. Call this from + md_begin() if you plan to use these functions and you want the + fixup count in each element to be set to 0 intially. This is + not necessary, but it's included just in case. It performs + the same function for each element in the array of fixup chains + that gas_init_parse() performs for the current fixups. + + gas_cgen_save_fixups (element): + element - element number of the array you wish to store the fixups + to. No mechanism is built in for tracking what element + was last stored to. + + gas_cgen_restore_fixups (element): + element - element number of the array you wish to restore the fixups + from. + + gas_cgen_swap_fixups(int element): + element - swap the current fixups with those in this element number. +*/ + +struct saved_fixups { + struct fixup fixup_chain[GAS_CGEN_MAX_FIXUPS]; + int num_fixups_in_chain; +}; -static struct fixup saved_fixups[GAS_CGEN_MAX_FIXUPS]; -static int saved_num_fixups; +static struct saved_fixups stored_fixups[MAX_SAVED_FIXUP_CHAINS]; void -gas_cgen_save_fixups () +gas_cgen_initialize_saved_fixups_array () { - saved_num_fixups = num_fixups; - - memcpy (saved_fixups, fixups, sizeof (fixups[0]) * num_fixups); + int i = 0; - num_fixups = 0; + while (i < MAX_SAVED_FIXUP_CHAINS) + stored_fixups[i++].num_fixups_in_chain = 0; } void -gas_cgen_restore_fixups () +gas_cgen_save_fixups (i) + int i; { - num_fixups = saved_num_fixups; - - memcpy (fixups, saved_fixups, sizeof (fixups[0]) * num_fixups); + if (i < 0 || i >= MAX_SAVED_FIXUP_CHAINS) + { + as_fatal ("index into stored_fixups[] out of bounds"); + return; + } - saved_num_fixups = 0; + stored_fixups[i].num_fixups_in_chain = num_fixups; + memcpy (stored_fixups[i].fixup_chain, fixups, + sizeof (fixups[0]) * num_fixups); + num_fixups = 0; } void -gas_cgen_swap_fixups () +gas_cgen_restore_fixups (i) + int i; { - int tmp; - struct fixup tmp_fixup; - - if (num_fixups == 0) + if (i < 0 || i >= MAX_SAVED_FIXUP_CHAINS) { - gas_cgen_restore_fixups (); + as_fatal ("index into stored_fixups[] out of bounds"); + return; } - else if (saved_num_fixups == 0) + + num_fixups = stored_fixups[i].num_fixups_in_chain; + memcpy (fixups,stored_fixups[i].fixup_chain, + (sizeof (stored_fixups[i].fixup_chain[0])) * num_fixups); + stored_fixups[i].num_fixups_in_chain = 0; +} + +void +gas_cgen_swap_fixups (i) + int i; +{ + if (i < 0 || i >= MAX_SAVED_FIXUP_CHAINS) { - gas_cgen_save_fixups (); + as_fatal ("index into stored_fixups[] out of bounds"); + return; } + + if (num_fixups == 0) + gas_cgen_restore_fixups (i); + + else if (stored_fixups[i].num_fixups_in_chain == 0) + gas_cgen_save_fixups (i); + else { - tmp = saved_num_fixups; - saved_num_fixups = num_fixups; + int tmp; + struct fixup tmp_fixup; + + tmp = stored_fixups[i].num_fixups_in_chain; + stored_fixups[i].num_fixups_in_chain = num_fixups; num_fixups = tmp; for (tmp = GAS_CGEN_MAX_FIXUPS; tmp--;) { - tmp_fixup = saved_fixups [tmp]; - saved_fixups [tmp] = fixups [tmp]; - fixups [tmp] = tmp_fixup; + tmp_fixup = stored_fixups[i].fixup_chain [tmp]; + stored_fixups[i].fixup_chain[tmp] = fixups [tmp]; + fixups [tmp] = tmp_fixup; } } } @@ -164,7 +223,7 @@ gas_cgen_swap_fixups () At this point we do not use a bfd_reloc_code_real_type for operands residing in the insn, but instead just use the operand index. This lets us easily handle fixups for any - operand type. We pick a BFD reloc type in md_apply_fix. */ + operand type. We pick a BFD reloc type in md_apply_fix3. */ fixS * gas_cgen_record_fixup (frag, where, insn, length, operand, opinfo, symbol, offset) @@ -204,7 +263,7 @@ gas_cgen_record_fixup (frag, where, insn, length, operand, opinfo, symbol, offse At this point we do not use a bfd_reloc_code_real_type for operands residing in the insn, but instead just use the operand index. This lets us easily handle fixups for any - operand type. We pick a BFD reloc type in md_apply_fix. */ + operand type. We pick a BFD reloc type in md_apply_fix3. */ fixS * gas_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp) @@ -265,7 +324,7 @@ gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP) static char *hold; static enum cgen_parse_operand_result *resultP_1; #endif - const char *errmsg = NULL; + const char *errmsg; expressionS exp; if (want == CGEN_PARSE_OPERAND_INIT) @@ -285,12 +344,13 @@ gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP) expr_jmp_buf_p = 0; input_line_pointer = (char *) hold; *resultP_1 = CGEN_PARSE_OPERAND_RESULT_ERROR; - return "illegal operand"; + return _("illegal operand"); } expr_jmp_buf_p = 1; expression (&exp); expr_jmp_buf_p = 0; + errmsg = NULL; *strP = input_line_pointer; input_line_pointer = hold; @@ -509,14 +569,14 @@ gas_cgen_finish_insn (insn, buf, length, relax_p, result) handles the rest. bfd_install_relocation (or some other bfd function) should handle them all. */ -int -gas_cgen_md_apply_fix3 (fixP, valueP, seg) +void +gas_cgen_md_apply_fix3 (fixP, valP, seg) fixS * fixP; - valueT * valueP; + valueT * valP; segT seg ATTRIBUTE_UNUSED; { char *where = fixP->fx_frag->fr_literal + fixP->fx_where; - valueT value; + valueT value = * valP; /* Canonical name, since used a lot. */ CGEN_CPU_DESC cd = gas_cgen_cpu_desc; @@ -532,15 +592,15 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg) result of md_pcrel_from. This is confusing. */ if (fixP->fx_addsy == (symbolS *) NULL) - { - value = *valueP; - fixP->fx_done = 1; - } + fixP->fx_done = 1; + else if (fixP->fx_pcrel) - value = *valueP; + ; + else { value = fixP->fx_offset; + if (fixP->fx_subsy != (symbolS *) NULL) { if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section) @@ -594,7 +654,7 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg) } if (fixP->fx_done) - return 1; + return; /* The operand isn't fully resolved. Determine a BFD reloc value based on the operand information and leave it to @@ -602,16 +662,15 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg) partial_inplace == false. */ reloc_type = md_cgen_lookup_reloc (insn, operand, fixP); + if (reloc_type != BFD_RELOC_NONE) - { - fixP->fx_r_type = reloc_type; - } + fixP->fx_r_type = reloc_type; else { as_bad_where (fixP->fx_file, fixP->fx_line, _("unresolved expression that must be resolved")); fixP->fx_done = 1; - return 1; + return; } } else if (fixP->fx_done) @@ -639,17 +698,13 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg) break; } } - else - { - /* bfd_install_relocation will be called to finish things up. */ - } + /* else + bfd_install_relocation will be called to finish things up. */ /* Tuck `value' away for use by tc_gen_reloc. See the comment describing fx_addnumber in write.h. This field is misnamed (or misused :-). */ fixP->fx_addnumber = value; - - return 1; } /* Translate internal representation of relocation info to BFD target format. diff --git a/contrib/binutils/gas/cgen.h b/contrib/binutils/gas/cgen.h index b09ccaa..97cd38d 100644 --- a/contrib/binutils/gas/cgen.h +++ b/contrib/binutils/gas/cgen.h @@ -53,9 +53,12 @@ extern const char * gas_cgen_parse_operand /* Call this from md_assemble to initialize the assembler callback. */ extern void gas_cgen_init_parse PARAMS ((void)); -extern void gas_cgen_save_fixups PARAMS ((void)); -extern void gas_cgen_restore_fixups PARAMS ((void)); -extern void gas_cgen_swap_fixups PARAMS ((void)); +/* Routines and macros for saving fixup chains. */ +extern void gas_cgen_save_fixups PARAMS ((int)); +extern void gas_cgen_restore_fixups PARAMS ((int)); +extern void gas_cgen_swap_fixups PARAMS ((int)); +extern void gas_cgen_initialize_saved_fixups_array PARAMS ((void)); +#define MAX_SAVED_FIXUP_CHAINS 50 /* Add a register to the assembler's hash table. This makes lets GAS parse registers for us. @@ -77,7 +80,7 @@ extern fixS * gas_cgen_record_fixup_exp PARAMS ((fragS *, int, const CGEN_INSN * expressionS *)); /* md_apply_fix3 handler */ -extern int gas_cgen_md_apply_fix3 PARAMS ((fixS *, valueT *, segT)); +extern void gas_cgen_md_apply_fix3 PARAMS ((fixS *, valueT *, segT)); /* tc_gen_reloc handler */ extern arelent *gas_cgen_tc_gen_reloc PARAMS ((asection *, fixS *)); @@ -93,4 +96,6 @@ md_cgen_record_fixup_exp PARAMS ((fragS *, int, const CGEN_INSN *, int, const CGEN_OPERAND *, int, expressionS *)); +extern void gas_cgen_md_operand PARAMS ((expressionS *)); + #endif /* GAS_CGEN_H */ diff --git a/contrib/binutils/gas/cond.c b/contrib/binutils/gas/cond.c index 6c6e8ad..73304cb 100644 --- a/contrib/binutils/gas/cond.c +++ b/contrib/binutils/gas/cond.c @@ -257,11 +257,11 @@ s_elseif (arg) { if (current_cframe == NULL) { - as_bad (_("\".elseif\" without matching \".if\" - ignored")); + as_bad (_("\".elseif\" without matching \".if\"")); } else if (current_cframe->else_seen) { - as_bad (_("\".elseif\" after \".else\" - ignored")); + as_bad (_("\".elseif\" after \".else\"")); as_bad_where (current_cframe->else_file_line.file, current_cframe->else_file_line.line, _("here is the previous \"else\"")); @@ -365,11 +365,11 @@ s_else (arg) { if (current_cframe == NULL) { - as_bad (_(".else without matching .if - ignored")); + as_bad (_("\".else\" without matching \".if\"")); } else if (current_cframe->else_seen) { - as_bad (_("duplicate \"else\" - ignored")); + as_bad (_("duplicate \"else\"")); as_bad_where (current_cframe->else_file_line.file, current_cframe->else_file_line.line, _("here is the previous \"else\"")); diff --git a/contrib/binutils/gas/config.in b/contrib/binutils/gas/config.in index e2a6003..6f1311f 100644 --- a/contrib/binutils/gas/config.in +++ b/contrib/binutils/gas/config.in @@ -154,20 +154,14 @@ /* Using strict COFF? */ #undef STRICTCOFF -/* Use ELF stabs for MIPS, not ECOFF stabs */ -#undef MIPS_STABS_ELF - -/* Use ELF stabs for MIPS, not ECOFF stabs */ -#undef MIPS_STABS_ELF - /* Define if default target is PowerPC Solaris. */ #undef TARGET_SOLARIS_COMMENT /* Define as 1 if big endian. */ #undef TARGET_BYTES_BIG_ENDIAN -/* Default architecture. */ -#undef DEFAULT_ARCH +/* Use ELF stabs for MIPS, not ECOFF stabs */ +#undef MIPS_STABS_ELF /* Default architecture. */ #undef DEFAULT_ARCH diff --git a/contrib/binutils/gas/config/e-i386aout.c b/contrib/binutils/gas/config/e-i386aout.c index 18fdf68..f8435ab 100644 --- a/contrib/binutils/gas/config/e-i386aout.c +++ b/contrib/binutils/gas/config/e-i386aout.c @@ -1,6 +1,8 @@ #include "as.h" #include "emul.h" +static const char *i386aout_bfd_name PARAMS ((void)); + static const char * i386aout_bfd_name () { diff --git a/contrib/binutils/gas/config/e-i386coff.c b/contrib/binutils/gas/config/e-i386coff.c index afed728..f6510a4 100644 --- a/contrib/binutils/gas/config/e-i386coff.c +++ b/contrib/binutils/gas/config/e-i386coff.c @@ -1,6 +1,8 @@ #include "as.h" #include "emul.h" +static const char *i386coff_bfd_name PARAMS ((void)); + static const char * i386coff_bfd_name () { diff --git a/contrib/binutils/gas/config/e-i386elf.c b/contrib/binutils/gas/config/e-i386elf.c index a16701e..e11fc3d 100644 --- a/contrib/binutils/gas/config/e-i386elf.c +++ b/contrib/binutils/gas/config/e-i386elf.c @@ -1,6 +1,8 @@ #include "as.h" #include "emul.h" +static const char *i386elf_bfd_name PARAMS ((void)); + static const char * i386elf_bfd_name () { diff --git a/contrib/binutils/gas/config/obj-aout.c b/contrib/binutils/gas/config/obj-aout.c index 9d4f24a..a394306 100644 --- a/contrib/binutils/gas/config/obj-aout.c +++ b/contrib/binutils/gas/config/obj-aout.c @@ -466,7 +466,7 @@ obj_crawl_symbol_chain (headers) S_SET_SEGMENT (symbolP, SEG_TEXT); } /* if pusing data into text */ - resolve_symbol_value (symbolP, 1); + resolve_symbol_value (symbolP); /* Skip symbols which were equated to undefined or common symbols. */ @@ -755,4 +755,4 @@ const struct format_ops aout_format_ops = 0, /* read_begin_hook */ 0 /* symbol_new_hook */ }; -#endif BFD_ASSEMBLER +#endif /* BFD_ASSEMBLER */ diff --git a/contrib/binutils/gas/config/obj-coff.c b/contrib/binutils/gas/config/obj-coff.c index 69e5558..759389a 100644 --- a/contrib/binutils/gas/config/obj-coff.c +++ b/contrib/binutils/gas/config/obj-coff.c @@ -38,7 +38,29 @@ #define TC_COFF_SECTION_DEFAULT_ATTRIBUTES (SEC_LOAD | SEC_DATA) #endif +/* This is used to hold the symbol built by a sequence of pseudo-ops + from .def and .endef. */ +static symbolS *def_symbol_in_progress; + +typedef struct + { + unsigned long chunk_size; + unsigned long element_size; + unsigned long size; + char *data; + unsigned long pointer; + } +stack; + +static stack *stack_init PARAMS ((unsigned long, unsigned long)); +static char *stack_push PARAMS ((stack *, char *)); +static char *stack_pop PARAMS ((stack *)); +static void tag_init PARAMS ((void)); +static void tag_insert PARAMS ((const char *, symbolS *)); +static symbolS *tag_find PARAMS ((char *)); +static symbolS *tag_find_or_make PARAMS ((char *)); static void obj_coff_bss PARAMS ((int)); +static void obj_coff_weak PARAMS ((int)); const char *s_get_name PARAMS ((symbolS * s)); static void obj_coff_ln PARAMS ((int)); static void obj_coff_def PARAMS ((int)); @@ -54,21 +76,8 @@ static void obj_coff_ident PARAMS ((int)); #ifdef BFD_ASSEMBLER static void obj_coff_loc PARAMS((int)); #endif - -/* This is used to hold the symbol built by a sequence of pseudo-ops - from .def and .endef. */ -static symbolS *def_symbol_in_progress; /* stack stuff */ -typedef struct - { - unsigned long chunk_size; - unsigned long element_size; - unsigned long size; - char *data; - unsigned long pointer; - } -stack; static stack * stack_init (chunk_size, element_size) @@ -246,7 +255,11 @@ obj_coff_weak (ignore) #ifdef BFD_ASSEMBLER +static segT fetch_coff_debug_section PARAMS ((void)); static void SA_SET_SYM_TAGNDX PARAMS ((symbolS *, symbolS *)); +static int S_GET_DATA_TYPE PARAMS ((symbolS *)); +void c_symbol_merge PARAMS ((symbolS *, symbolS *)); +static void add_lineno PARAMS ((fragS *, addressT, int)); #define GET_FILENAME_STRING(X) \ ((char*) (&((X)->sy_symbol.ost_auxent->x_file.x_n.x_offset))[1]) @@ -493,13 +506,13 @@ obj_coff_ln (appline) } l = get_absolute_expression (); - if (!appline) - { - add_lineno (frag_now, frag_now_fix (), l); - } - if (appline) + /* If there is no lineno symbol, treat a .ln + directive as if it were a .appline directive. */ + if (appline || current_lineno_sym == NULL) new_logical_line ((char *) NULL, l - 1); + else + add_lineno (frag_now, frag_now_fix (), l); #ifndef NO_LISTING { @@ -1174,18 +1187,21 @@ coff_frob_symbol (symp, punt) if (!SF_GET_DEBUG (symp)) { - symbolS *real; + symbolS * real; + if (!SF_GET_LOCAL (symp) && !SF_GET_STATICS (symp) && S_GET_STORAGE_CLASS (symp) != C_LABEL && symbol_constant_p(symp) && (real = symbol_find_base (S_GET_NAME (symp), DO_NOT_STRIP)) + && S_GET_STORAGE_CLASS (real) == C_NULL && real != symp) { c_symbol_merge (symp, real); *punt = 1; return; } + if (!S_IS_DEFINED (symp) && !SF_GET_LOCAL (symp)) { assert (S_GET_VALUE (symp) == 0); @@ -1199,6 +1215,7 @@ coff_frob_symbol (symp, punt) else S_SET_STORAGE_CLASS (symp, C_STAT); } + if (SF_GET_PROCESS (symp)) { if (S_GET_STORAGE_CLASS (symp) == C_BLOCK) @@ -1208,6 +1225,7 @@ coff_frob_symbol (symp, punt) else { symbolS *begin; + begin = *(symbolS **) stack_pop (block_stack); if (begin == 0) as_warn (_("mismatched .eb")); @@ -1215,9 +1233,11 @@ coff_frob_symbol (symp, punt) next_set_end = begin; } } + if (coff_last_function == 0 && SF_GET_FUNCTION (symp)) { union internal_auxent *auxp; + coff_last_function = symp; if (S_GET_NUMBER_AUXILIARY (symp) < 1) S_SET_NUMBER_AUXILIARY (symp, 1); @@ -1225,6 +1245,7 @@ coff_frob_symbol (symp, punt) memset (auxp->x_sym.x_fcnary.x_ary.x_dimen, 0, sizeof (auxp->x_sym.x_fcnary.x_ary.x_dimen)); } + if (S_GET_STORAGE_CLASS (symp) == C_EFCN) { if (coff_last_function == 0) @@ -1236,6 +1257,7 @@ coff_frob_symbol (symp, punt) coff_last_function = 0; } } + if (S_IS_EXTERNAL (symp)) S_SET_STORAGE_CLASS (symp, C_EXT); else if (SF_GET_LOCAL (symp)) @@ -1287,6 +1309,7 @@ coff_frob_symbol (symp, punt) set_end = next_set_end; } +#ifndef OBJ_XCOFF if (! *punt && S_GET_STORAGE_CLASS (symp) == C_FCN && strcmp (S_GET_NAME (symp), ".bf") == 0) @@ -1295,7 +1318,7 @@ coff_frob_symbol (symp, punt) SA_SET_SYM_ENDNDX (coff_last_bf, symp); coff_last_bf = symp; } - +#endif if (coffsymbol (symbol_get_bfdsym (symp))->lineno) { int i; @@ -1608,7 +1631,7 @@ obj_coff_init_stab_section (seg) /* Zero it out. */ memset (p, 0, 12); as_where (&file, (unsigned int *) NULL); - stabstr_name = (char *) alloca (strlen (seg->name) + 4); + stabstr_name = (char *) xmalloc (strlen (seg->name) + 4); strcpy (stabstr_name, seg->name); strcat (stabstr_name, "str"); stroff = get_stab_string_offset (file, stabstr_name); @@ -1824,7 +1847,6 @@ size_section (abfd, idx) break; #endif case rs_space: - assert (frag->fr_symbol == 0); case rs_fill: case rs_org: size += frag->fr_fix; @@ -1977,7 +1999,7 @@ do_relocs_for (abfd, h, file_cursor) /* Turn the segment of the symbol into an offset. */ if (symbol_ptr) { - resolve_symbol_value (symbol_ptr, 1); + resolve_symbol_value (symbol_ptr); if (! symbol_ptr->sy_resolved) { char *file; @@ -2038,8 +2060,8 @@ do_relocs_for (abfd, h, file_cursor) #endif /* Write out the reloc table */ - bfd_write ((PTR) external_reloc_vec, 1, external_reloc_size, - abfd); + bfd_bwrite ((PTR) external_reloc_vec, + (bfd_size_type) external_reloc_size, abfd); free (external_reloc_vec); /* Fill in section header info. */ @@ -2138,7 +2160,6 @@ fill_section (abfd, h, file_cursor) break; case rs_space: - assert (frag->fr_symbol == 0); case rs_fill: case rs_align: case rs_align_code: @@ -2182,7 +2203,7 @@ fill_section (abfd, h, file_cursor) { if (s->s_scnptr != 0) { - bfd_write (buffer, s->s_size, 1, abfd); + bfd_bwrite (buffer, s->s_size, abfd); *file_cursor += s->s_size; } free (buffer); @@ -2206,7 +2227,7 @@ coff_header_append (abfd, h) unsigned long string_size = 4; #endif - bfd_seek (abfd, 0, 0); + bfd_seek (abfd, (file_ptr) 0, 0); #ifndef OBJ_COFF_OMIT_OPTIONAL_HEADER H_SET_MAGIC_NUMBER (h, COFF_MAGIC); @@ -2222,8 +2243,8 @@ coff_header_append (abfd, h) i = bfd_coff_swap_filehdr_out (abfd, &h->filehdr, buffer); - bfd_write (buffer, i, 1, abfd); - bfd_write (buffero, H_GET_SIZEOF_OPTIONAL_HEADER (h), 1, abfd); + bfd_bwrite (buffer, (bfd_size_type) i, abfd); + bfd_bwrite (buffero, (bfd_size_type) H_GET_SIZEOF_OPTIONAL_HEADER (h), abfd); for (i = SEG_E0; i < SEG_LAST; i++) { @@ -2248,7 +2269,7 @@ coff_header_append (abfd, h) buffer); if (size == 0) as_bad (_("bfd_coff_swap_scnhdr_out failed")); - bfd_write (buffer, size, 1, abfd); + bfd_bwrite (buffer, (bfd_size_type) size, abfd); } } } @@ -2958,7 +2979,7 @@ yank_symbols () S_SET_SEGMENT (symbolP, SEG_E0); } /* push data into text */ - resolve_symbol_value (symbolP, 1); + resolve_symbol_value (symbolP); if (S_GET_STORAGE_CLASS (symbolP) == C_NULL) { @@ -3375,7 +3396,7 @@ do_linenos_for (abfd, h, file_cursor) s->scnhdr.s_lnnoptr = *file_cursor; - bfd_write (buffer, 1, s->scnhdr.s_nlnno * LINESZ, abfd); + bfd_bwrite (buffer, (bfd_size_type) s->scnhdr.s_nlnno * LINESZ, abfd); free (buffer); *file_cursor += s->scnhdr.s_nlnno * LINESZ; @@ -3473,6 +3494,9 @@ write_object_file () relax_segment (segment_info[i].frchainP->frch_root, i); } + /* Relaxation has completed. Freeze all syms. */ + finalize_syms = 1; + H_SET_NUMBER_OF_SECTIONS (&headers, 0); /* Find out how big the sections are, and set the addresses. */ @@ -3595,7 +3619,8 @@ write_object_file () w_symbols (abfd, buffer1, symbol_rootP); if (string_byte_count > 0) w_strings (buffer1 + symtable_size); - bfd_write (buffer1, 1, symtable_size + string_byte_count, abfd); + bfd_bwrite (buffer1, (bfd_size_type) symtable_size + string_byte_count, + abfd); free (buffer1); } @@ -4191,7 +4216,7 @@ fixup_segment (segP, this_segment_type) /* Make sure the symbols have been resolved; this may not have happened if these are expression symbols. */ if (add_symbolP != NULL && ! add_symbolP->sy_resolved) - resolve_symbol_value (add_symbolP, 1); + resolve_symbol_value (add_symbolP); if (add_symbolP != NULL) { @@ -4221,7 +4246,7 @@ fixup_segment (segP, this_segment_type) } if (sub_symbolP != NULL && ! sub_symbolP->sy_resolved) - resolve_symbol_value (sub_symbolP, 1); + resolve_symbol_value (sub_symbolP); if (add_symbolP != NULL && add_symbolP->sy_mri_common) @@ -4471,11 +4496,7 @@ fixup_segment (segP, this_segment_type) #endif } /* if pcrel */ -#ifdef MD_APPLY_FIX3 - md_apply_fix3 (fixP, (valueT *) &add_number, this_segment_type); -#else - md_apply_fix (fixP, add_number); -#endif + md_apply_fix3 (fixP, (valueT *) & add_number, this_segment_type); if (!fixP->fx_bit_fixP && ! fixP->fx_no_overflow) { diff --git a/contrib/binutils/gas/config/obj-coff.h b/contrib/binutils/gas/config/obj-coff.h index f862f77..98948be 100644 --- a/contrib/binutils/gas/config/obj-coff.h +++ b/contrib/binutils/gas/config/obj-coff.h @@ -121,10 +121,17 @@ #ifdef TE_PE #define TARGET_FORMAT "pe-shl" #else + +#if 0 /* FIXME: The "shl" varaible does not appear to exist. What happened to it ? */ #define TARGET_FORMAT \ (shl \ ? (sh_small ? "coff-shl-small" : "coff-shl") \ : (sh_small ? "coff-sh-small" : "coff-sh")) +#else +#define TARGET_FORMAT \ + (sh_small ? "coff-shl-small" : "coff-shl") +#endif + #endif #endif diff --git a/contrib/binutils/gas/config/obj-ecoff.c b/contrib/binutils/gas/config/obj-ecoff.c index d1eabce..4d055cb 100644 --- a/contrib/binutils/gas/config/obj-ecoff.c +++ b/contrib/binutils/gas/config/obj-ecoff.c @@ -106,7 +106,7 @@ ecoff_frob_file () const struct ecoff_debug_swap * const debug_swap = &ecoff_backend (stdoutput)->debug_swap; bfd_vma addr; - asection *sec; + asection **sec; HDRR *hdr; char *buf; char *set; @@ -143,53 +143,39 @@ ecoff_frob_file () }; #define n_names ((int) (sizeof (names) / sizeof (names[0]))) + /* Sections that match names, order to be straightened out later. */ + asection *secs[n_names]; + int i; + addr = 0; - { - /* Sections that match names, order to be straightened out later. */ - asection *secs[n_names]; - /* Linked list of sections with non-matching names. Random ordering. */ - asection *other_sections = 0; - /* Pointer to next section, since we're destroying the original - ordering. */ - asection *next; - - int i; - - for (i = 0; i < n_names; i++) - secs[i] = 0; - for (sec = stdoutput->sections; sec != (asection *) NULL; sec = next) - { - next = sec->next; - for (i = 0; i < n_names; i++) - if (!strcmp (sec->name, names[i])) - { - secs[i] = sec; - break; - } - if (i == n_names) + for (i = 0; i < n_names; i++) + secs[i] = 0; + + for (sec = &stdoutput->sections; *sec != (asection *) NULL; ) + { + for (i = 0; i < n_names; i++) + if (!strcmp ((*sec)->name, names[i])) { - bfd_set_section_vma (stdoutput, sec, addr); - addr += bfd_section_size (stdoutput, sec); - sec->next = other_sections; - other_sections = sec; + secs[i] = *sec; + bfd_section_list_remove (stdoutput, sec); + break; } - } - for (i = 0; i < n_names; i++) - if (secs[i]) + if (i == n_names) { - sec = secs[i]; - bfd_set_section_vma (stdoutput, sec, addr); - addr += bfd_section_size (stdoutput, sec); + bfd_set_section_vma (stdoutput, *sec, addr); + addr += bfd_section_size (stdoutput, *sec); + sec = &(*sec)->next; } - for (i = n_names - 1; i >= 0; i--) - if (secs[i]) - { - sec = secs[i]; - sec->next = other_sections; - other_sections = sec; - } - stdoutput->sections = other_sections; - } + } + for (i = 0; i < n_names; i++) + if (secs[i]) + { + bfd_set_section_vma (stdoutput, secs[i], addr); + addr += bfd_section_size (stdoutput, secs[i]); + } + for (i = n_names - 1; i >= 0; i--) + if (secs[i]) + bfd_section_list_insert (stdoutput, &stdoutput->sections, secs[i]); /* Build the ECOFF debugging information. */ assert (ecoff_data (stdoutput) != 0); diff --git a/contrib/binutils/gas/config/obj-elf.c b/contrib/binutils/gas/config/obj-elf.c index 162f02f..6ec0882 100644 --- a/contrib/binutils/gas/config/obj-elf.c +++ b/contrib/binutils/gas/config/obj-elf.c @@ -1,5 +1,5 @@ /* ELF object file format - Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -21,6 +21,7 @@ #define OBJ_HEADER "obj-elf.h" #include "as.h" +#include "safe-ctype.h" #include "subsegs.h" #include "obstack.h" @@ -55,9 +56,9 @@ static void elf_s_set_size PARAMS ((symbolS *, bfd_vma)); static bfd_vma elf_s_get_align PARAMS ((symbolS *)); static void elf_s_set_align PARAMS ((symbolS *, bfd_vma)); static void elf_s_set_other PARAMS ((symbolS *, int)); -static void elf_copy_symbol_attributes PARAMS ((symbolS *, symbolS *)); static int elf_sec_sym_ok_for_reloc PARAMS ((asection *)); static void adjust_stab_sections PARAMS ((bfd *, asection *, PTR)); +static void build_group_lists PARAMS ((bfd *, asection *, PTR)); static int elf_separate_stab_sections PARAMS ((void)); static void elf_init_stab_section PARAMS ((segT)); @@ -74,6 +75,12 @@ static void obj_elf_ident PARAMS ((int)); static void obj_elf_weak PARAMS ((int)); static void obj_elf_local PARAMS ((int)); static void obj_elf_visibility PARAMS ((int)); +static void obj_elf_change_section + PARAMS ((const char *, int, int, int, const char *, int)); +static int obj_elf_parse_section_letters PARAMS ((char *, size_t)); +static int obj_elf_section_word PARAMS ((char *, size_t)); +static char *obj_elf_section_name PARAMS ((void)); +static int obj_elf_section_type PARAMS ((char *, size_t)); static void obj_elf_symver PARAMS ((int)); static void obj_elf_subsection PARAMS ((int)); static void obj_elf_popsection PARAMS ((int)); @@ -242,13 +249,6 @@ elf_s_set_other (sym, other) S_SET_OTHER (sym, other); } -static void -elf_copy_symbol_attributes (dest, src) - symbolS *dest, *src; -{ - OBJ_COPY_SYMBOL_ATTRIBUTES (dest, src); -} - static int elf_sec_sym_ok_for_reloc (sec) asection *sec; @@ -305,7 +305,7 @@ obj_elf_common (is_common) SKIP_WHITESPACE (); if (*input_line_pointer != ',') { - as_bad (_("Expected comma after symbol-name")); + as_bad (_("expected comma after symbol-name")); ignore_rest_of_line (); return; } @@ -322,7 +322,7 @@ obj_elf_common (is_common) *p = c; if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP)) { - as_bad (_("Ignoring attempt to re-define symbol")); + as_bad (_("symbol `%s' is already defined"), S_GET_NAME (symbolP)); ignore_rest_of_line (); return; } @@ -330,7 +330,7 @@ obj_elf_common (is_common) { if (S_GET_VALUE (symbolP) != (valueT) size) { - as_warn (_("Length of .comm \"%s\" is already %ld. Not changed to %d."), + as_warn (_("length of .comm \"%s\" is already %ld; not changed to %d"), S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), size); } } @@ -353,7 +353,7 @@ obj_elf_common (is_common) if (temp < 0) { temp = 0; - as_warn (_("Common alignment negative; 0 assumed")); + as_warn (_("common alignment negative; 0 assumed")); } } if (symbol_get_obj (symbolP)->local) @@ -372,7 +372,7 @@ obj_elf_common (is_common) for (align = 0; (temp & 1) == 0; temp >>= 1, ++align); if (temp != 1) { - as_bad (_("Common alignment not a power of 2")); + as_bad (_("common alignment not a power of 2")); ignore_rest_of_line (); return; } @@ -619,10 +619,14 @@ static struct special_section const special_sections[] = { NULL, 0, 0 } }; -void -obj_elf_change_section (name, type, attr, push) - char *name; - int type, attr, push; +static void +obj_elf_change_section (name, type, attr, entsize, group_name, push) + const char *name; + int type; + int attr; + int entsize; + const char *group_name; + int push; { asection *old_sec; segT sec; @@ -661,11 +665,11 @@ obj_elf_change_section (name, type, attr, push) { if (old_sec == NULL) { - as_warn (_("Setting incorrect section type for %s"), name); + as_warn (_("setting incorrect section type for %s"), name); } else { - as_warn (_("Ignoring incorrect section type for %s"), name); + as_warn (_("ignoring incorrect section type for %s"), name); type = special_sections[i].type; } } @@ -678,7 +682,7 @@ obj_elf_change_section (name, type, attr, push) file. */ if (strcmp (name, ".note") != 0 || attr != SHF_ALLOC) - as_warn (_("Setting incorrect section attributes for %s"), + as_warn (_("setting incorrect section attributes for %s"), name); } attr |= special_sections[i].attributes; @@ -690,7 +694,9 @@ obj_elf_change_section (name, type, attr, push) | ((attr & SHF_WRITE) ? 0 : SEC_READONLY) | ((attr & SHF_ALLOC) ? SEC_ALLOC : 0) | (((attr & SHF_ALLOC) && type != SHT_NOBITS) ? SEC_LOAD : 0) - | ((attr & SHF_EXECINSTR) ? SEC_CODE : 0)); + | ((attr & SHF_EXECINSTR) ? SEC_CODE : 0) + | ((attr & SHF_MERGE) ? SEC_MERGE : 0) + | ((attr & SHF_STRINGS) ? SEC_STRINGS : 0)); #ifdef md_elf_section_flags flags = md_elf_section_flags (flags, attr, type); #endif @@ -704,6 +710,9 @@ obj_elf_change_section (name, type, attr, push) seg_info (sec)->bss = 1; bfd_set_section_flags (stdoutput, sec, flags); + if (flags & SEC_MERGE) + sec->entsize = entsize; + elf_group_name (sec) = group_name; /* Add a symbol for this section to the symbol table. */ secsym = symbol_find (name); @@ -719,8 +728,13 @@ obj_elf_change_section (name, type, attr, push) saw the first time. */ if ((old_sec->flags ^ flags) & (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE - | SEC_EXCLUDE | SEC_SORT_ENTRIES)) - as_warn (_("Ignoring changed section attributes for %s"), name); + | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE | SEC_STRINGS)) + as_warn (_("ignoring changed section attributes for %s"), name); + else if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize) + as_warn (_("ignoring changed section entity size for %s"), name); + else if ((attr & SHF_GROUP) != 0 + && strcmp (elf_group_name (old_sec), group_name) != 0) + as_warn (_("ignoring new section group for %s"), name); } #ifdef md_elf_section_change_hook @@ -728,7 +742,7 @@ obj_elf_change_section (name, type, attr, push) #endif } -int +static int obj_elf_parse_section_letters (str, len) char *str; size_t len; @@ -748,9 +762,30 @@ obj_elf_parse_section_letters (str, len) case 'x': attr |= SHF_EXECINSTR; break; + case 'M': + attr |= SHF_MERGE; + break; + case 'S': + attr |= SHF_STRINGS; + break; + case 'G': + attr |= SHF_GROUP; + break; + /* Compatibility. */ + case 'm': + if (*(str - 1) == 'a') + { + attr |= SHF_MERGE; + if (len > 1 && str[1] == 's') + { + attr |= SHF_STRINGS; + str++, len--; + } + break; + } default: { - char *bad_msg = _("Unrecognized .section attribute: want a,w,x"); + char *bad_msg = _("unrecognized .section attribute: want a,w,x,M,S,G"); #ifdef md_elf_section_letter int md_attr = md_elf_section_letter (*str, &bad_msg); if (md_attr >= 0) @@ -770,7 +805,7 @@ obj_elf_parse_section_letters (str, len) return attr; } -int +static int obj_elf_section_word (str, len) char *str; size_t len; @@ -790,11 +825,11 @@ obj_elf_section_word (str, len) } #endif - as_warn (_("Unrecognized section attribute")); + as_warn (_("unrecognized section attribute")); return 0; } -int +static int obj_elf_section_type (str, len) char *str; size_t len; @@ -812,16 +847,57 @@ obj_elf_section_type (str, len) } #endif - as_warn (_("Unrecognized section type")); + as_warn (_("unrecognized section type")); return 0; } +/* Get name of section. */ +static char * +obj_elf_section_name () +{ + char *name; + + SKIP_WHITESPACE (); + if (*input_line_pointer == '"') + { + int dummy; + + name = demand_copy_C_string (&dummy); + if (name == NULL) + { + ignore_rest_of_line (); + return NULL; + } + } + else + { + char *end = input_line_pointer; + + while (0 == strchr ("\n\t,; ", *end)) + end++; + if (end == input_line_pointer) + { + as_warn (_("missing name")); + ignore_rest_of_line (); + return NULL; + } + + name = xmalloc (end - input_line_pointer + 1); + memcpy (name, input_line_pointer, end - input_line_pointer); + name[end - input_line_pointer] = '\0'; + input_line_pointer = end; + } + SKIP_WHITESPACE (); + return name; +} + void obj_elf_section (push) int push; { - char *name, *beg, *end; + char *name, *group_name, *beg; int type, attr, dummy; + int entsize; #ifndef TC_I370 if (flag_mri) @@ -845,38 +921,13 @@ obj_elf_section (push) } #endif /* ! defined (TC_I370) */ - /* Get name of section. */ - SKIP_WHITESPACE (); - if (*input_line_pointer == '"') - { - name = demand_copy_C_string (&dummy); - if (name == NULL) - { - ignore_rest_of_line (); - return; - } - } - else - { - end = input_line_pointer; - while (0 == strchr ("\n\t,; ", *end)) - end++; - if (end == input_line_pointer) - { - as_warn (_("Missing section name")); - ignore_rest_of_line (); - return; - } - - name = xmalloc (end - input_line_pointer + 1); - memcpy (name, input_line_pointer, end - input_line_pointer); - name[end - input_line_pointer] = '\0'; - input_line_pointer = end; - } - SKIP_WHITESPACE (); - + name = obj_elf_section_name (); + if (name == NULL) + return; type = SHT_NULL; attr = 0; + group_name = NULL; + entsize = 0; if (*input_line_pointer == ',') { @@ -898,6 +949,8 @@ obj_elf_section (push) if (*input_line_pointer == ',') { char c; + char *save = input_line_pointer; + ++input_line_pointer; SKIP_WHITESPACE (); c = *input_line_pointer; @@ -918,6 +971,41 @@ obj_elf_section (push) *input_line_pointer = c; type = obj_elf_section_type (beg, input_line_pointer - beg); } + else + input_line_pointer = save; + } + + SKIP_WHITESPACE (); + if ((attr & SHF_MERGE) != 0 && *input_line_pointer == ',') + { + ++input_line_pointer; + SKIP_WHITESPACE (); + entsize = get_absolute_expression (); + SKIP_WHITESPACE (); + if (entsize < 0) + { + as_warn (_("invalid merge entity size")); + attr &= ~SHF_MERGE; + entsize = 0; + } + } + else if ((attr & SHF_MERGE) != 0) + { + as_warn (_("entity size for SHF_MERGE not specified")); + attr &= ~SHF_MERGE; + } + + if ((attr & SHF_GROUP) != 0 && *input_line_pointer == ',') + { + ++input_line_pointer; + group_name = obj_elf_section_name (); + if (group_name == NULL) + attr &= ~SHF_GROUP; + } + else if ((attr & SHF_GROUP) != 0) + { + as_warn (_("group name for SHF_GROUP not specified")); + attr &= ~SHF_GROUP; } } else @@ -929,7 +1017,7 @@ obj_elf_section (push) SKIP_WHITESPACE (); if (*input_line_pointer != '#') { - as_warn (_("Bad .section directive - character following name is not '#'")); + as_warn (_("character following name is not '#'")); ignore_rest_of_line (); return; } @@ -948,7 +1036,7 @@ obj_elf_section (push) demand_empty_rest_of_line (); - obj_elf_change_section (name, type, attr, push); + obj_elf_change_section (name, type, attr, entsize, group_name, push); } /* Change to the .data section. */ @@ -1030,7 +1118,7 @@ obj_elf_previous (ignore) if (previous_section == 0) { - as_bad (_(".previous without corresponding .section; ignored")); + as_warn (_(".previous without corresponding .section; ignored")); return; } @@ -1057,7 +1145,7 @@ obj_elf_popsection (xxx) if (top == NULL) { - as_bad (_(".popsection without corresponding .pushsection; ignored")); + as_warn (_(".popsection without corresponding .pushsection; ignored")); return; } @@ -1098,6 +1186,7 @@ obj_elf_symver (ignore) { char *name; char c; + char old_lexat; symbolS *sym; name = input_line_pointer; @@ -1117,13 +1206,12 @@ obj_elf_symver (ignore) ++input_line_pointer; name = input_line_pointer; - while (1) - { - c = get_symbol_end (); - if (c != ELF_VER_CHR) - break; - *input_line_pointer++ = c; - } + + /* Temporarily include '@' in symbol names. */ + old_lexat = lex_type[(unsigned char) '@']; + lex_type[(unsigned char) '@'] |= LEX_NAME; + c = get_symbol_end (); + lex_type[(unsigned char) '@'] = old_lexat; if (symbol_get_obj (sym)->versioned_name == NULL) { @@ -1206,7 +1294,7 @@ obj_elf_vtable_inherit (ignore) if (input_line_pointer[0] == '0' && (input_line_pointer[1] == '\0' - || isspace ((unsigned char) input_line_pointer[1]))) + || ISSPACE (input_line_pointer[1]))) { psym = section_symbol (absolute_section); ++input_line_pointer; @@ -1296,20 +1384,46 @@ elf_obj_symbol_new_hook (symbolP) #endif } +/* When setting one symbol equal to another, by default we probably + want them to have the same "size", whatever it means in the current + context. */ + +void +elf_copy_symbol_attributes (dest, src) + symbolS *dest, *src; +{ + struct elf_obj_sy *srcelf = symbol_get_obj (src); + struct elf_obj_sy *destelf = symbol_get_obj (dest); + if (srcelf->size) + { + if (destelf->size == NULL) + destelf->size = + (expressionS *) xmalloc (sizeof (expressionS)); + *destelf->size = *srcelf->size; + } + else + { + if (destelf->size != NULL) + free (destelf->size); + destelf->size = NULL; + } + S_SET_SIZE (dest, S_GET_SIZE (src)); + S_SET_OTHER (dest, S_GET_OTHER (src)); +} + void obj_elf_version (ignore) int ignore ATTRIBUTE_UNUSED; { char *name; unsigned int c; - char ch; char *p; asection *seg = now_seg; subsegT subseg = now_subseg; Elf_Internal_Note i_note; Elf_External_Note e_note; asection *note_secp = (asection *) NULL; - int i, len; + int len; SKIP_WHITESPACE (); if (*input_line_pointer == '\"') @@ -1339,26 +1453,21 @@ obj_elf_version (ignore) i_note.descsz = 0; /* no description */ i_note.type = NT_VERSION; p = frag_more (sizeof (e_note.namesz)); - md_number_to_chars (p, (valueT) i_note.namesz, 4); + md_number_to_chars (p, (valueT) i_note.namesz, sizeof (e_note.namesz)); p = frag_more (sizeof (e_note.descsz)); - md_number_to_chars (p, (valueT) i_note.descsz, 4); + md_number_to_chars (p, (valueT) i_note.descsz, sizeof (e_note.descsz)); p = frag_more (sizeof (e_note.type)); - md_number_to_chars (p, (valueT) i_note.type, 4); + md_number_to_chars (p, (valueT) i_note.type, sizeof (e_note.type)); + p = frag_more (len + 1); + strcpy (p, name); - for (i = 0; i < len; i++) - { - ch = *(name + i); - { - FRAG_APPEND_1_CHAR (ch); - } - } frag_align (2, 0, 0); subseg_set (seg, subseg); } else { - as_bad (_("Expected quoted string")); + as_bad (_("expected quoted string")); } demand_empty_rest_of_line (); } @@ -1396,7 +1505,14 @@ obj_elf_size (ignore) sym = symbol_find_or_make (name); *p = c; if (exp.X_op == O_constant) - S_SET_SIZE (sym, exp.X_add_number); + { + S_SET_SIZE (sym, exp.X_add_number); + if (symbol_get_obj (sym)->size) + { + xfree (symbol_get_obj (sym)->size); + symbol_get_obj (sym)->size = NULL; + } + } else { symbol_get_obj (sym)->size = @@ -1464,7 +1580,7 @@ obj_elf_type (ignore) ; #endif else - as_bad (_("ignoring unrecognized symbol type \"%s\""), typename); + as_bad (_("unrecognized symbol type \"%s\""), typename); *input_line_pointer = c; @@ -1525,7 +1641,7 @@ obj_elf_init_stab_section (seg) /* Zero it out. */ memset (p, 0, 12); as_where (&file, (unsigned int *) NULL); - stabstr_name = (char *) alloca (strlen (segment_name (seg)) + 4); + stabstr_name = (char *) xmalloc (strlen (segment_name (seg)) + 4); strcpy (stabstr_name, segment_name (seg)); strcat (stabstr_name, "str"); stroff = get_stab_string_offset (file, stabstr_name); @@ -1736,7 +1852,7 @@ elf_frob_symbol (symp, puntp) if (S_IS_WEAK (symp)) { if (S_IS_COMMON (symp)) - as_bad (_("Symbol `%s' can not be both weak and common"), + as_bad (_("symbol `%s' can not be both weak and common"), S_GET_NAME (symp)); } @@ -1769,11 +1885,101 @@ elf_frob_symbol (symp, puntp) #endif } +struct group_list +{ + asection **head; /* Section lists. */ + unsigned int *elt_count; /* Number of sections in each list. */ + unsigned int num_group; /* Number of lists. */ +}; + +/* Called via bfd_map_over_sections. If SEC is a member of a group, + add it to a list of sections belonging to the group. INF is a + pointer to a struct group_list, which is where we store the head of + each list. */ + +static void +build_group_lists (abfd, sec, inf) + bfd *abfd ATTRIBUTE_UNUSED; + asection *sec; + PTR inf; +{ + struct group_list *list = (struct group_list *) inf; + const char *group_name = elf_group_name (sec); + unsigned int i; + + if (group_name == NULL) + return; + + /* If this group already has a list, add the section to the head of + the list. */ + for (i = 0; i < list->num_group; i++) + { + if (strcmp (group_name, elf_group_name (list->head[i])) == 0) + { + elf_next_in_group (sec) = list->head[i]; + list->head[i] = sec; + list->elt_count[i] += 1; + return; + } + } + + /* New group. Make the arrays bigger in chunks to minimize calls to + realloc. */ + i = list->num_group; + if ((i & 127) == 0) + { + unsigned int newsize = i + 128; + list->head = xrealloc (list->head, newsize * sizeof (*list->head)); + list->elt_count = xrealloc (list->elt_count, + newsize * sizeof (*list->elt_count)); + } + list->head[i] = sec; + list->elt_count[i] = 1; + list->num_group += 1; +} + void elf_frob_file () { + struct group_list list; + unsigned int i; + bfd_map_over_sections (stdoutput, adjust_stab_sections, (PTR) 0); + /* Go find section groups. */ + list.num_group = 0; + list.head = NULL; + list.elt_count = NULL; + bfd_map_over_sections (stdoutput, build_group_lists, (PTR) &list); + + /* Make the SHT_GROUP sections that describe each section group. We + can't set up the section contents here yet, because elf section + indices have yet to be calculated. elf.c:set_group_contents does + the rest of the work. */ + for (i = 0; i < list.num_group; i++) + { + const char *group_name = elf_group_name (list.head[i]); + asection *s; + flagword flags; + + s = subseg_force_new (group_name, 0); + flags = SEC_READONLY | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_GROUP; + if (s == NULL + || !bfd_set_section_flags (stdoutput, s, flags) + || !bfd_set_section_alignment (stdoutput, s, 2)) + { + as_fatal (_("can't create group: %s"), + bfd_errmsg (bfd_get_error ())); + } + + /* Pass a pointer to the first section in this group. */ + elf_next_in_group (s) = list.head[i]; + + s->_raw_size = 4 * (list.elt_count[i] + 1); + s->contents = frag_more (s->_raw_size); + frag_now->fr_fix = frag_now_fix_octets (); + } + #ifdef elf_tc_final_processing elf_tc_final_processing (); #endif @@ -1859,7 +2065,7 @@ elf_frob_file_after_relocs () debug.external_ext = debug.external_ext_end = NULL; if (! bfd_ecoff_debug_externals (stdoutput, &debug, debug_swap, true, elf_get_extr, elf_set_index)) - as_fatal (_("Failed to set up debugging information: %s"), + as_fatal (_("failed to set up debugging information: %s"), bfd_errmsg (bfd_get_error ())); sec = bfd_get_section_by_name (stdoutput, ".mdebug"); @@ -1879,7 +2085,7 @@ elf_frob_file_after_relocs () pointer will not be used. */ if (! bfd_set_section_contents (stdoutput, sec, (PTR) buf, (file_ptr) 0, (bfd_size_type) 0)) - as_fatal (_("Can't start writing .mdebug section: %s"), + as_fatal (_("can't start writing .mdebug section: %s"), bfd_errmsg (bfd_get_error ())); know (stdoutput->output_has_begun == true); @@ -1887,7 +2093,7 @@ elf_frob_file_after_relocs () if (! bfd_ecoff_write_debug (stdoutput, &debug, debug_swap, sec->filepos)) - as_fatal (_("Could not write .mdebug section: %s"), + as_fatal (_("could not write .mdebug section: %s"), bfd_errmsg (bfd_get_error ())); } #endif /* NEED_ECOFF_DEBUG */ diff --git a/contrib/binutils/gas/config/obj-elf.h b/contrib/binutils/gas/config/obj-elf.h index 8e3ce7d..33c5f43 100644 --- a/contrib/binutils/gas/config/obj-elf.h +++ b/contrib/binutils/gas/config/obj-elf.h @@ -182,32 +182,10 @@ void elf_obj_symbol_new_hook PARAMS ((symbolS *)); #define obj_symbol_new_hook elf_obj_symbol_new_hook #endif -/* When setting one symbol equal to another, by default we probably - want them to have the same "size", whatever it means in the current - context. */ +void elf_copy_symbol_attributes PARAMS ((symbolS *, symbolS *)); #ifndef OBJ_COPY_SYMBOL_ATTRIBUTES -#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST,SRC) \ -do \ - { \ - struct elf_obj_sy *srcelf = symbol_get_obj (SRC); \ - struct elf_obj_sy *destelf = symbol_get_obj (DEST); \ - if (srcelf->size) \ - { \ - if (destelf->size == NULL) \ - destelf->size = \ - (expressionS *) xmalloc (sizeof (expressionS)); \ - *destelf->size = *srcelf->size; \ - } \ - else \ - { \ - if (destelf->size != NULL) \ - free (destelf->size); \ - destelf->size = NULL; \ - } \ - S_SET_SIZE ((DEST), S_GET_SIZE (SRC)); \ - S_SET_OTHER ((DEST), S_GET_OTHER (SRC)); \ - } \ -while (0) +#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \ + (elf_copy_symbol_attributes (DEST, SRC)) #endif #ifndef SEPARATE_STAB_SECTIONS diff --git a/contrib/binutils/gas/config/obj-ieee.c b/contrib/binutils/gas/config/obj-ieee.c index 521a0d7..505bb35 100644 --- a/contrib/binutils/gas/config/obj-ieee.c +++ b/contrib/binutils/gas/config/obj-ieee.c @@ -292,7 +292,7 @@ do_symbols (abfd) { ptr->sy_symbol.sy.section = (asection *) (segment_info[ptr->sy_symbol.seg].user_stuff); - S_SET_VALUE (ptr, S_GET_VALUE (ptr) + ptr->sy_frag->fr_address); + S_SET_VALUE (ptr, S_GET_VALUE (ptr)); if (ptr->sy_symbol.sy.flags == 0) ptr->sy_symbol.sy.flags = BSF_LOCAL; } @@ -558,6 +558,9 @@ write_object_file () for (i = SEG_E0; i < SEG_UNKNOWN; i++) relax_segment (segment_info[i].frag_root, i); + /* Relaxation has completed. Freeze all syms. */ + finalize_syms = 1; + /* Now the addresses of the frags are correct within the segment. */ bfd_as_write_hook (); diff --git a/contrib/binutils/gas/config/tc-alpha.c b/contrib/binutils/gas/config/tc-alpha.c index ba42aaa..b1a3471 100644 --- a/contrib/binutils/gas/config/tc-alpha.c +++ b/contrib/binutils/gas/config/tc-alpha.c @@ -62,7 +62,7 @@ #include "dwarf2dbg.h" #endif -#include <ctype.h> +#include "safe-ctype.h" /* Local types */ @@ -81,7 +81,7 @@ struct alpha_insn { unsigned insn; int nfixups; struct alpha_fixup fixups[MAX_INSN_FIXUPS]; - unsigned sequence[MAX_INSN_FIXUPS]; + long sequence; }; enum alpha_macro_arg { @@ -92,10 +92,6 @@ enum alpha_macro_arg { MACRO_CPIR, MACRO_FPR, MACRO_EXP, - MACRO_LITERAL, - MACRO_BASE, - MACRO_BYTOFF, - MACRO_JSR }; struct alpha_macro { @@ -110,19 +106,29 @@ struct alpha_macro { #define O_pregister O_md1 /* O_register, in parentheses */ #define O_cpregister O_md2 /* + a leading comma */ -#ifdef RELOC_OP_P /* Note, the alpha_reloc_op table below depends on the ordering - of O_literal .. O_gprelow. */ + of O_literal .. O_gpre16. */ #define O_literal O_md3 /* !literal relocation */ -#define O_lituse_base O_md4 /* !lituse_base relocation */ -#define O_lituse_bytoff O_md5 /* !lituse_bytoff relocation */ -#define O_lituse_jsr O_md6 /* !lituse_jsr relocation */ -#define O_gpdisp O_md7 /* !gpdisp relocation */ -#define O_gprelhigh O_md8 /* !gprelhigh relocation */ -#define O_gprellow O_md9 /* !gprellow relocation */ - -#define USER_RELOC_P(R) ((R) >= O_literal && (R) <= O_gprellow) -#endif +#define O_lituse_addr O_md4 /* !lituse_addr relocation */ +#define O_lituse_base O_md5 /* !lituse_base relocation */ +#define O_lituse_bytoff O_md6 /* !lituse_bytoff relocation */ +#define O_lituse_jsr O_md7 /* !lituse_jsr relocation */ +#define O_gpdisp O_md8 /* !gpdisp relocation */ +#define O_gprelhigh O_md9 /* !gprelhigh relocation */ +#define O_gprellow O_md10 /* !gprellow relocation */ +#define O_gprel O_md11 /* !gprel relocation */ + +#define DUMMY_RELOC_LITUSE_ADDR (BFD_RELOC_UNUSED + 1) +#define DUMMY_RELOC_LITUSE_BASE (BFD_RELOC_UNUSED + 2) +#define DUMMY_RELOC_LITUSE_BYTOFF (BFD_RELOC_UNUSED + 3) +#define DUMMY_RELOC_LITUSE_JSR (BFD_RELOC_UNUSED + 4) + +#define LITUSE_ADDR 0 +#define LITUSE_BASE 1 +#define LITUSE_BYTOFF 2 +#define LITUSE_JSR 3 + +#define USER_RELOC_P(R) ((R) >= O_literal && (R) <= O_gprel) /* Macros for extracting the type and number of encoded register tokens */ @@ -188,6 +194,9 @@ struct alpha_macro { /* Prototypes for all local functions */ +static struct alpha_reloc_tag *get_alpha_reloc_tag PARAMS ((long)); +static void alpha_adjust_symtab_relocs PARAMS ((bfd *, asection *, PTR)); + static int tokenize_arguments PARAMS ((char *, expressionS *, int)); static const struct alpha_opcode *find_opcode_match PARAMS ((const struct alpha_opcode *, const expressionS *, int *, int *)); @@ -197,16 +206,15 @@ static unsigned insert_operand PARAMS ((unsigned, const struct alpha_operand *, offsetT, char *, unsigned)); static void assemble_insn PARAMS ((const struct alpha_opcode *, const expressionS *, int, - struct alpha_insn *)); + struct alpha_insn *, bfd_reloc_code_real_type)); static void emit_insn PARAMS ((struct alpha_insn *)); static void assemble_tokens_to_insn PARAMS ((const char *, const expressionS *, int, struct alpha_insn *)); static void assemble_tokens PARAMS ((const char *, const expressionS *, int, int)); -static int load_expression - PARAMS ((int, const expressionS *, int *, expressionS *, - const expressionS *)); +static long load_expression + PARAMS ((int, const expressionS *, int *, expressionS *)); static void emit_ldgp PARAMS ((const expressionS *, int, const PTR)); static void emit_division PARAMS ((const expressionS *, int, const PTR)); @@ -257,16 +265,14 @@ static void s_alpha_base PARAMS ((int)); static void s_alpha_align PARAMS ((int)); static void s_alpha_stringer PARAMS ((int)); static void s_alpha_space PARAMS ((int)); +static void s_alpha_ucons PARAMS ((int)); +static void s_alpha_arch PARAMS ((int)); static void create_literal_section PARAMS ((const char *, segT *, symbolS **)); #ifndef OBJ_ELF static void select_gp_value PARAMS ((void)); #endif static void alpha_align PARAMS ((int, char *, symbolS *, int)); - -#ifdef RELOC_OP_P -static void alpha_adjust_symtab_relocs PARAMS ((bfd *, asection *, PTR)); -#endif /* Generic assembler global variables which must be defined by all targets. */ @@ -469,103 +475,58 @@ static int alpha_flag_show_after_trunc = 0; /* -H */ that op-O_literal indexes into it. */ #define ALPHA_RELOC_TABLE(op) \ -&alpha_reloc_op[ ((!USER_RELOC_P (op)) \ +(&alpha_reloc_op[ ((!USER_RELOC_P (op)) \ ? (abort (), 0) \ - : (int) (op) - (int) O_literal) ] + : (int) (op) - (int) O_literal) ]) -#define LITUSE_BASE 1 -#define LITUSE_BYTOFF 2 -#define LITUSE_JSR 3 +#define DEF(NAME, RELOC, REQ, ALLOW) \ + { #NAME, sizeof(#NAME)-1, O_##NAME, RELOC, REQ, ALLOW} static const struct alpha_reloc_op_tag { const char *name; /* string to lookup */ size_t length; /* size of the string */ - bfd_reloc_code_real_type reloc; /* relocation before frob */ operatorT op; /* which operator to use */ - int lituse; /* addened to specify lituse */ + bfd_reloc_code_real_type reloc; /* relocation before frob */ + unsigned int require_seq : 1; /* require a sequence number */ + unsigned int allow_seq : 1; /* allow a sequence number */ } alpha_reloc_op[] = { - - { - "literal", /* name */ - sizeof ("literal")-1, /* length */ - BFD_RELOC_ALPHA_USER_LITERAL, /* reloc */ - O_literal, /* op */ - 0, /* lituse */ - }, - - { - "lituse_base", /* name */ - sizeof ("lituse_base")-1, /* length */ - BFD_RELOC_ALPHA_USER_LITUSE_BASE, /* reloc */ - O_lituse_base, /* op */ - LITUSE_BASE, /* lituse */ - }, - - { - "lituse_bytoff", /* name */ - sizeof ("lituse_bytoff")-1, /* length */ - BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF, /* reloc */ - O_lituse_bytoff, /* op */ - LITUSE_BYTOFF, /* lituse */ - }, - - { - "lituse_jsr", /* name */ - sizeof ("lituse_jsr")-1, /* length */ - BFD_RELOC_ALPHA_USER_LITUSE_JSR, /* reloc */ - O_lituse_jsr, /* op */ - LITUSE_JSR, /* lituse */ - }, - - { - "gpdisp", /* name */ - sizeof ("gpdisp")-1, /* length */ - BFD_RELOC_ALPHA_USER_GPDISP, /* reloc */ - O_gpdisp, /* op */ - 0, /* lituse */ - }, - - { - "gprelhigh", /* name */ - sizeof ("gprelhigh")-1, /* length */ - BFD_RELOC_ALPHA_USER_GPRELHIGH, /* reloc */ - O_gprelhigh, /* op */ - 0, /* lituse */ - }, - - { - "gprellow", /* name */ - sizeof ("gprellow")-1, /* length */ - BFD_RELOC_ALPHA_USER_GPRELLOW, /* reloc */ - O_gprellow, /* op */ - 0, /* lituse */ - }, + DEF(literal, BFD_RELOC_ALPHA_ELF_LITERAL, 0, 1), + DEF(lituse_addr, DUMMY_RELOC_LITUSE_ADDR, 1, 1), + DEF(lituse_base, DUMMY_RELOC_LITUSE_BASE, 1, 1), + DEF(lituse_bytoff, DUMMY_RELOC_LITUSE_BYTOFF, 1, 1), + DEF(lituse_jsr, DUMMY_RELOC_LITUSE_JSR, 1, 1), + DEF(gpdisp, BFD_RELOC_ALPHA_GPDISP, 1, 1), + DEF(gprelhigh, BFD_RELOC_ALPHA_GPREL_HI16, 0, 0), + DEF(gprellow, BFD_RELOC_ALPHA_GPREL_LO16, 0, 0), + DEF(gprel, BFD_RELOC_GPREL16, 0, 0) }; +#undef DEF + static const int alpha_num_reloc_op = sizeof (alpha_reloc_op) / sizeof (*alpha_reloc_op); +#endif /* RELOC_OP_P */ /* Maximum # digits needed to hold the largest sequence # */ #define ALPHA_RELOC_DIGITS 25 -/* Whether a sequence number is valid. */ -#define ALPHA_RELOC_SEQUENCE_OK(X) ((X) > 0 && ((unsigned) (X)) == (X)) - /* Structure to hold explict sequence information. */ -struct alpha_literal_tag +struct alpha_reloc_tag { - fixS *lituse; /* head of linked list of !literals */ + fixS *slaves; /* head of linked list of !literals */ segT segment; /* segment relocs are in or undefined_section*/ - int multi_section_p; /* True if more than one section was used */ - unsigned sequence; /* sequence # */ - unsigned n_literals; /* # of literals */ - unsigned n_lituses; /* # of lituses */ + long sequence; /* sequence # */ + unsigned n_master; /* # of literals */ + unsigned n_slaves; /* # of lituses */ + char multi_section_p; /* True if more than one section was used */ char string[1]; /* printable form of sequence to hash with */ }; /* Hash table to link up literals with the appropriate lituse */ static struct hash_control *alpha_literal_hash; -#endif + +/* Sequence numbers for internal use by macros. */ +static long next_sequence_num = -1; /* A table of CPU names and opcode sets. */ @@ -606,48 +567,48 @@ static const struct cpu_type { static const struct alpha_macro alpha_macros[] = { /* Load/Store macros */ { "lda", emit_lda, NULL, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_LITERAL, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldah", emit_ldah, NULL, { MACRO_IR, MACRO_EXP, MACRO_EOA } }, { "ldl", emit_ir_load, "ldl", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldl_l", emit_ir_load, "ldl_l", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldq", emit_ir_load, "ldq", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_LITERAL, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldq_l", emit_ir_load, "ldq_l", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldq_u", emit_ir_load, "ldq_u", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldf", emit_loadstore, "ldf", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldg", emit_loadstore, "ldg", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "lds", emit_loadstore, "lds", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldt", emit_loadstore, "ldt", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldb", emit_ldX, (PTR) 0, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldbu", emit_ldXu, (PTR) 0, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldw", emit_ldX, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldwu", emit_ldXu, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "uldw", emit_uldX, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "uldwu", emit_uldXu, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "uldl", emit_uldX, (PTR) 2, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "uldlu", emit_uldXu, (PTR) 2, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "uldq", emit_uldXu, (PTR) 3, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ldgp", emit_ldgp, NULL, { MACRO_IR, MACRO_EXP, MACRO_PIR, MACRO_EOA } }, @@ -672,34 +633,34 @@ static const struct alpha_macro alpha_macros[] = { #endif { "stl", emit_loadstore, "stl", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stl_c", emit_loadstore, "stl_c", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stq", emit_loadstore, "stq", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stq_c", emit_loadstore, "stq_c", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stq_u", emit_loadstore, "stq_u", - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stf", emit_loadstore, "stf", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stg", emit_loadstore, "stg", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "sts", emit_loadstore, "sts", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stt", emit_loadstore, "stt", - { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stb", emit_stX, (PTR) 0, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "stw", emit_stX, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ustw", emit_ustX, (PTR) 1, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ustl", emit_ustX, (PTR) 2, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, { "ustq", emit_ustX, (PTR) 3, - { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } }, + { MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_EOA } }, /* Arithmetic macros */ #if 0 @@ -762,15 +723,15 @@ static const struct alpha_macro alpha_macros[] = { MACRO_IR, MACRO_EXP, MACRO_EOA */ } }, { "jsr", emit_jsrjmp, "jsr", - { MACRO_PIR, MACRO_EXP, MACRO_JSR, MACRO_EOA, - MACRO_PIR, MACRO_JSR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_JSR, MACRO_EOA, - MACRO_EXP, MACRO_JSR, MACRO_EOA } }, + { MACRO_PIR, MACRO_EXP, MACRO_EOA, + MACRO_PIR, MACRO_EOA, + MACRO_IR, MACRO_EXP, MACRO_EOA, + MACRO_EXP, MACRO_EOA } }, { "jmp", emit_jsrjmp, "jmp", - { MACRO_PIR, MACRO_EXP, MACRO_JSR, MACRO_EOA, - MACRO_PIR, MACRO_JSR, MACRO_EOA, - MACRO_IR, MACRO_EXP, MACRO_JSR, MACRO_EOA, - MACRO_EXP, MACRO_JSR, MACRO_EOA } }, + { MACRO_PIR, MACRO_EXP, MACRO_EOA, + MACRO_PIR, MACRO_EOA, + MACRO_IR, MACRO_EXP, MACRO_EOA, + MACRO_EXP, MACRO_EOA } }, { "ret", emit_retjcr, "ret", { MACRO_IR, MACRO_EXP, MACRO_EOA, MACRO_IR, MACRO_EOA, @@ -825,7 +786,8 @@ md_begin () name = alpha_opcodes[i].name; retval = hash_insert (alpha_opcode_hash, name, (PTR) &alpha_opcodes[i]); if (retval) - as_fatal (_("internal error: can't hash opcode `%s': %s"), name, retval); + as_fatal (_("internal error: can't hash opcode `%s': %s"), + name, retval); /* Some opcodes include modifiers of various sorts with a "/mod" syntax, like the architecture manual suggests. However, for @@ -912,12 +874,10 @@ md_begin () } #endif /* OBJ_ELF */ - subseg_set (text_section, 0); - -#ifdef RELOC_OP_P /* Create literal lookup hash table. */ alpha_literal_hash = hash_new (); -#endif + + subseg_set (text_section, 0); } /* The public interface to the instruction assembler. */ @@ -1158,13 +1118,14 @@ md_pcrel_from (fixP) the distance to the "lda" instruction for setting the addend to GPDISP. */ -int -md_apply_fix (fixP, valueP) +void +md_apply_fix3 (fixP, valP, seg) fixS *fixP; - valueT *valueP; + valueT * valP; + segT seg; { char * const fixpos = fixP->fx_frag->fr_literal + fixP->fx_where; - valueT value = *valueP; + valueT value = * valP; unsigned image, size; switch (fixP->fx_r_type) @@ -1176,10 +1137,13 @@ md_apply_fix (fixP, valueP) case BFD_RELOC_ALPHA_GPDISP_HI16: { fixS *next = fixP->fx_next; - assert (next->fx_r_type == BFD_RELOC_ALPHA_GPDISP_LO16); - fixP->fx_offset = (next->fx_frag->fr_address + next->fx_where - - fixP->fx_frag->fr_address - fixP->fx_where); + /* With user-specified !gpdisp relocations, we can be missing + the matching LO16 reloc. We will have already issued an + error message. */ + if (next) + fixP->fx_offset = (next->fx_frag->fr_address + next->fx_where + - fixP->fx_frag->fr_address - fixP->fx_where); value = (value - sign_extend_16 (value)) >> 16; } @@ -1196,7 +1160,7 @@ md_apply_fix (fixP, valueP) #endif do_reloc_gp: - fixP->fx_addsy = section_symbol (now_seg); + fixP->fx_addsy = section_symbol (seg); md_number_to_chars (fixpos, value, 2); break; @@ -1220,7 +1184,7 @@ md_apply_fix (fixP, valueP) md_number_to_chars (fixpos, value, size); goto done; } - return 1; + return; #ifdef OBJ_ECOFF case BFD_RELOC_GPREL32: @@ -1229,11 +1193,13 @@ md_apply_fix (fixP, valueP) /* FIXME: inherited this obliviousness of `value' -- why? */ md_number_to_chars (fixpos, -alpha_gp_value, 4); break; -#endif -#ifdef OBJ_ELF +#else case BFD_RELOC_GPREL32: - return 1; #endif + case BFD_RELOC_GPREL16: + case BFD_RELOC_ALPHA_GPREL_HI16: + case BFD_RELOC_ALPHA_GPREL_LO16: + return; case BFD_RELOC_23_PCREL_S2: if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0) @@ -1242,7 +1208,7 @@ md_apply_fix (fixP, valueP) image = (image & ~0x1FFFFF) | ((value >> 2) & 0x1FFFFF); goto write_done; } - return 1; + return; case BFD_RELOC_ALPHA_HINT: if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0) @@ -1251,43 +1217,22 @@ md_apply_fix (fixP, valueP) image = (image & ~0x3FFF) | ((value >> 2) & 0x3FFF); goto write_done; } - return 1; + return; #ifdef OBJ_ECOFF case BFD_RELOC_ALPHA_LITERAL: md_number_to_chars (fixpos, value, 2); - return 1; - - case BFD_RELOC_ALPHA_LITUSE: - return 1; + return; #endif -#ifdef OBJ_ELF case BFD_RELOC_ALPHA_ELF_LITERAL: case BFD_RELOC_ALPHA_LITUSE: - return 1; -#endif -#ifdef OBJ_EVAX case BFD_RELOC_ALPHA_LINKAGE: case BFD_RELOC_ALPHA_CODEADDR: - return 1; -#endif - -#ifdef RELOC_OP_P - case BFD_RELOC_ALPHA_USER_LITERAL: - case BFD_RELOC_ALPHA_USER_LITUSE_BASE: - case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF: - case BFD_RELOC_ALPHA_USER_LITUSE_JSR: - return 1; - - case BFD_RELOC_ALPHA_USER_GPDISP: - case BFD_RELOC_ALPHA_USER_GPRELHIGH: - case BFD_RELOC_ALPHA_USER_GPRELLOW: - abort (); -#endif + return; case BFD_RELOC_VTABLE_INHERIT: case BFD_RELOC_VTABLE_ENTRY: - return 1; + return; default: { @@ -1317,7 +1262,7 @@ md_apply_fix (fixP, valueP) } if (fixP->fx_addsy != 0 || fixP->fx_pcrel != 0) - return 1; + return; else { as_warn_where (fixP->fx_file, fixP->fx_line, @@ -1330,12 +1275,9 @@ write_done: done: fixP->fx_done = 1; - return 0; } -/* - * Look for a register name in the given symbol. - */ +/* Look for a register name in the given symbol. */ symbolS * md_undefined_symbol (name) @@ -1354,7 +1296,7 @@ md_undefined_symbol (name) /* FALLTHRU */ case 'r': - if (!isdigit (*++name)) + if (!ISDIGIT (*++name)) break; /* FALLTHRU */ @@ -1362,7 +1304,7 @@ md_undefined_symbol (name) case '5': case '6': case '7': case '8': case '9': if (name[1] == '\0') num = name[0] - '0'; - else if (name[0] != '0' && isdigit (name[1]) && name[2] == '\0') + else if (name[0] != '0' && ISDIGIT (name[1]) && name[2] == '\0') { num = (name[0] - '0') * 10 + name[1] - '0'; if (num >= 32) @@ -1423,7 +1365,7 @@ alpha_define_label (sym) } /* Return true if we must always emit a reloc for a type and false if - there is some hope of resolving it a assembly time. */ + there is some hope of resolving it at assembly time. */ int alpha_force_relocation (f) @@ -1437,27 +1379,15 @@ alpha_force_relocation (f) case BFD_RELOC_ALPHA_GPDISP_HI16: case BFD_RELOC_ALPHA_GPDISP_LO16: case BFD_RELOC_ALPHA_GPDISP: -#ifdef OBJ_ECOFF case BFD_RELOC_ALPHA_LITERAL: -#endif -#ifdef OBJ_ELF case BFD_RELOC_ALPHA_ELF_LITERAL: -#endif case BFD_RELOC_ALPHA_LITUSE: + case BFD_RELOC_GPREL16: case BFD_RELOC_GPREL32: -#ifdef OBJ_EVAX + case BFD_RELOC_ALPHA_GPREL_HI16: + case BFD_RELOC_ALPHA_GPREL_LO16: case BFD_RELOC_ALPHA_LINKAGE: case BFD_RELOC_ALPHA_CODEADDR: -#endif -#ifdef RELOC_OP_P - case BFD_RELOC_ALPHA_USER_LITERAL: - case BFD_RELOC_ALPHA_USER_LITUSE_BASE: - case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF: - case BFD_RELOC_ALPHA_USER_LITUSE_JSR: - case BFD_RELOC_ALPHA_USER_GPDISP: - case BFD_RELOC_ALPHA_USER_GPRELHIGH: - case BFD_RELOC_ALPHA_USER_GPRELLOW: -#endif case BFD_RELOC_VTABLE_INHERIT: case BFD_RELOC_VTABLE_ENTRY: return 1; @@ -1496,35 +1426,21 @@ alpha_fix_adjustable (f) case BFD_RELOC_ALPHA_GPDISP: return 0; -#ifdef OBJ_ECOFF case BFD_RELOC_ALPHA_LITERAL: -#endif -#ifdef OBJ_ELF case BFD_RELOC_ALPHA_ELF_LITERAL: -#endif -#ifdef RELOC_OP_P - case BFD_RELOC_ALPHA_USER_LITERAL: -#endif -#ifdef OBJ_EVAX + case BFD_RELOC_ALPHA_LITUSE: case BFD_RELOC_ALPHA_LINKAGE: case BFD_RELOC_ALPHA_CODEADDR: -#endif return 1; - case BFD_RELOC_ALPHA_LITUSE: -#ifdef RELOC_OP_P - case BFD_RELOC_ALPHA_USER_LITUSE_BASE: - case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF: - case BFD_RELOC_ALPHA_USER_LITUSE_JSR: - case BFD_RELOC_ALPHA_USER_GPDISP: - case BFD_RELOC_ALPHA_USER_GPRELHIGH: - case BFD_RELOC_ALPHA_USER_GPRELLOW: -#endif case BFD_RELOC_VTABLE_ENTRY: case BFD_RELOC_VTABLE_INHERIT: return 0; + case BFD_RELOC_GPREL16: case BFD_RELOC_GPREL32: + case BFD_RELOC_ALPHA_GPREL_HI16: + case BFD_RELOC_ALPHA_GPREL_LO16: case BFD_RELOC_23_PCREL_S2: case BFD_RELOC_32: case BFD_RELOC_64: @@ -1591,7 +1507,8 @@ tc_gen_reloc (sec, fixp) * at assembly time. bfd_perform_reloc doesn't know about this sort * of thing, and as a result we need to fake it out here. */ - if ((S_IS_EXTERN (fixp->fx_addsy) || S_IS_WEAK (fixp->fx_addsy)) + if ((S_IS_EXTERN (fixp->fx_addsy) || S_IS_WEAK (fixp->fx_addsy) + || (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE)) && !S_IS_COMMON (fixp->fx_addsy)) reloc->addend -= symbol_get_bfdsym (fixp->fx_addsy)->value; #endif @@ -1649,31 +1566,45 @@ alpha_frob_file_before_adjust () #endif /* OBJ_ECOFF */ -#ifdef RELOC_OP_P +static struct alpha_reloc_tag * +get_alpha_reloc_tag (sequence) + long sequence; +{ + char buffer[ALPHA_RELOC_DIGITS]; + struct alpha_reloc_tag *info; + + sprintf (buffer, "!%ld", sequence); + + info = (struct alpha_reloc_tag *) hash_find (alpha_literal_hash, buffer); + if (! info) + { + size_t len = strlen (buffer); + const char *errmsg; + + info = (struct alpha_reloc_tag *) + xcalloc (sizeof (struct alpha_reloc_tag) + len, 1); + + info->segment = now_seg; + info->sequence = sequence; + strcpy (info->string, buffer); + errmsg = hash_insert (alpha_literal_hash, info->string, (PTR) info); + if (errmsg) + as_fatal (errmsg); + } + + return info; +} /* Before the relocations are written, reorder them, so that user supplied !lituse relocations follow the appropriate !literal - relocations. Also convert the gas-internal relocations to the - appropriate linker relocations. */ + relocations, and similarly for !gpdisp relocations. */ void alpha_adjust_symtab () { if (alpha_literal_hash) - { -#ifdef DEBUG2_ALPHA - fprintf (stderr, "alpha_adjust_symtab called\n"); -#endif - - /* Go over each section, reordering the relocations so that all - of the explicit LITUSE's are adjacent to the explicit - LITERAL's. */ - bfd_map_over_sections (stdoutput, alpha_adjust_symtab_relocs, - (char *) 0); - } + bfd_map_over_sections (stdoutput, alpha_adjust_symtab_relocs, NULL); } - -/* Inner function to move LITUSE's next to the LITERAL. */ static void alpha_adjust_symtab_relocs (abfd, sec, ptr) @@ -1685,14 +1616,8 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr) fixS **prevP; fixS *fixp; fixS *next; - fixS *lituse; - int n_lituses = 0; - -#ifdef DEBUG2_ALPHA - int n = 0; - int n_literals = 0; - int n_dup_literals = 0; -#endif + fixS *slave; + unsigned long n_slaves = 0; /* If seginfo is NULL, we did not create this section; don't do anything with it. By using a pointer to a pointer, we can update @@ -1704,121 +1629,94 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr) if (! seginfo->fix_root) return; - /* First rebuild the fixup chain without the expicit lituse's. */ - prevP = &(seginfo->fix_root); + /* First rebuild the fixup chain without the expicit lituse and + gpdisp_lo16 relocs. */ + prevP = &seginfo->fix_root; for (fixp = seginfo->fix_root; fixp; fixp = next) { next = fixp->fx_next; fixp->fx_next = (fixS *) 0; -#ifdef DEBUG2_ALPHA - n++; -#endif switch (fixp->fx_r_type) { - default: - *prevP = fixp; - prevP = &(fixp->fx_next); -#ifdef DEBUG2_ALPHA - fprintf (stderr, - "alpha_adjust_symtab_relocs: 0x%lx, other relocation %s\n", - (long) fixp, - bfd_get_reloc_code_name (fixp->fx_r_type)); -#endif - break; - - case BFD_RELOC_ALPHA_USER_LITERAL: - *prevP = fixp; - prevP = &(fixp->fx_next); - /* prevent assembler from trying to adjust the offset */ -#ifdef DEBUG2_ALPHA - n_literals++; - if (fixp->tc_fix_data.info->n_literals != 1) - n_dup_literals++; - fprintf (stderr, - "alpha_adjust_symtab_relocs: 0x%lx, !literal!%.6d, # literals = %2d\n", - (long) fixp, - fixp->tc_fix_data.info->sequence, - fixp->tc_fix_data.info->n_literals); -#endif + case BFD_RELOC_ALPHA_LITUSE: + n_slaves++; + if (fixp->tc_fix_data.info->n_master == 0) + as_bad_where (fixp->fx_file, fixp->fx_line, + _("No !literal!%ld was found"), + fixp->tc_fix_data.info->sequence); break; - /* do not link in lituse's */ - case BFD_RELOC_ALPHA_USER_LITUSE_BASE: - case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF: - case BFD_RELOC_ALPHA_USER_LITUSE_JSR: - n_lituses++; - if (fixp->tc_fix_data.info->n_literals == 0) + case BFD_RELOC_ALPHA_GPDISP_LO16: + n_slaves++; + if (fixp->tc_fix_data.info->n_master == 0) as_bad_where (fixp->fx_file, fixp->fx_line, - _("No !literal!%d was found"), + _("No ldah !gpdisp!%ld was found"), fixp->tc_fix_data.info->sequence); -#ifdef DEBUG2_ALPHA - fprintf (stderr, - "alpha_adjust_symtab_relocs: 0x%lx, !lituse !%.6d, # lituses = %2d, next_lituse = 0x%lx\n", - (long) fixp, - fixp->tc_fix_data.info->sequence, - fixp->tc_fix_data.info->n_lituses, - (long) fixp->tc_fix_data.next_lituse); -#endif + break; + + default: + *prevP = fixp; + prevP = &fixp->fx_next; break; } } - /* If there were any lituses, go and add them to the chain, unless there is - more than one !literal for a given sequence number. They are linked - through the next_lituse field in reverse order, so as we go through the - next_lituse chain, we effectively reverse the chain once again. If there - was more than one !literal, we fall back to loading up the address w/o - optimization. Also, if the !literals/!lituses are spread in different - segments (happens in the Linux kernel semaphores), suppress the - optimization. */ - if (n_lituses) + /* If there were any dependent relocations, go and add them back to + the chain. They are linked through the next_reloc field in + reverse order, so as we go through the next_reloc chain, we + effectively reverse the chain once again. + + Except if there is more than one !literal for a given sequence + number. In that case, the programmer and/or compiler is not sure + how control flows from literal to lituse, and we can't be sure to + get the relaxation correct. + + ??? Well, actually we could, if there are enough lituses such that + we can make each literal have at least one of each lituse type + present. Not implemented. + + Also suppress the optimization if the !literals/!lituses are spread + in different segments. This can happen with "intersting" uses of + inline assembly; examples are present in the Linux kernel semaphores. */ + + for (fixp = seginfo->fix_root; fixp; fixp = next) { - for (fixp = seginfo->fix_root; fixp; fixp = fixp->fx_next) + next = fixp->fx_next; + switch (fixp->fx_r_type) { - switch (fixp->fx_r_type) + case BFD_RELOC_ALPHA_ELF_LITERAL: + if (fixp->tc_fix_data.info->n_master == 1 + && ! fixp->tc_fix_data.info->multi_section_p) { - default: - break; - - case BFD_RELOC_ALPHA_USER_LITERAL: -#ifdef OBJ_ELF - fixp->fx_r_type = BFD_RELOC_ALPHA_ELF_LITERAL; -#else - fixp->fx_r_type = BFD_RELOC_ALPHA_LITERAL; /* XXX check this */ -#endif - if (fixp->tc_fix_data.info->n_literals == 1 - && ! fixp->tc_fix_data.info->multi_section_p) + for (slave = fixp->tc_fix_data.info->slaves; + slave != (fixS *) 0; + slave = slave->tc_fix_data.next_reloc) { - for (lituse = fixp->tc_fix_data.info->lituse; - lituse != (fixS *) 0; - lituse = lituse->tc_fix_data.next_lituse) - { - lituse->fx_next = fixp->fx_next; - fixp->fx_next = lituse; - } + slave->fx_next = fixp->fx_next; + fixp->fx_next = slave; } - break; + } + break; - case BFD_RELOC_ALPHA_USER_LITUSE_BASE: - case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF: - case BFD_RELOC_ALPHA_USER_LITUSE_JSR: - fixp->fx_r_type = BFD_RELOC_ALPHA_LITUSE; - break; + case BFD_RELOC_ALPHA_GPDISP_HI16: + if (fixp->tc_fix_data.info->n_slaves == 0) + as_bad_where (fixp->fx_file, fixp->fx_line, + _("No lda !gpdisp!%ld was found"), + fixp->tc_fix_data.info->sequence); + else + { + slave = fixp->tc_fix_data.info->slaves; + slave->fx_next = next; + fixp->fx_next = slave; } + break; + + default: + break; } } - -#ifdef DEBUG2_ALPHA - fprintf (stderr, "alpha_adjust_symtab_relocs: %s, %d literal%s, %d duplicate literal%s, %d lituse%s\n\n", - sec->name, - n_literals, (n_literals == 1) ? "" : "s", - n_dup_literals, (n_dup_literals == 1) ? "" : "s", - n_lituses, (n_lituses == 1) ? "" : "s"); -#endif } - -#endif /* RELOC_OP_P */ #ifdef DEBUG_ALPHA static void @@ -1875,7 +1773,7 @@ debug_exp (tok, ntok) case O_gpdisp: name = "O_gpdisp"; break; case O_gprelhigh: name = "O_gprelhigh"; break; case O_gprellow: name = "O_gprellow"; break; - case O_md10: name = "O_md10"; break; + case O_gprel: name = "O_gprel"; break; case O_md11: name = "O_md11"; break; case O_md12: name = "O_md12"; break; case O_md13: name = "O_md13"; break; @@ -1908,13 +1806,11 @@ tokenize_arguments (str, tok, ntok) #ifdef DEBUG_ALPHA expressionS *orig_tok = tok; #endif -#ifdef RELOC_OP_P char *p; const struct alpha_reloc_op_tag *r; int c, i; size_t len; int reloc_found_p = 0; -#endif memset (tok, 0, sizeof (*tok) * ntok); @@ -1922,6 +1818,11 @@ tokenize_arguments (str, tok, ntok) old_input_line_pointer = input_line_pointer; input_line_pointer = str; +#ifdef RELOC_OP_P + /* ??? Wrest control of ! away from the regular expression parser. */ + is_end_of_line[(unsigned char) '!'] = 1; +#endif + while (tok < end_tok && *input_line_pointer) { SKIP_WHITESPACE (); @@ -1944,59 +1845,66 @@ tokenize_arguments (str, tok, ntok) if (!saw_arg) goto err; - for (p = ++input_line_pointer; - ((c = *p) != '!' && c != ';' && c != '#' && c != ',' - && !is_end_of_line[c]); - p++) - ; + ++input_line_pointer; + SKIP_WHITESPACE (); + p = input_line_pointer; + c = get_symbol_end (); /* Parse !relocation_type */ - len = p - input_line_pointer; + len = input_line_pointer - p; if (len == 0) { as_bad (_("No relocation operand")); goto err_report; } - if (c != '!') - { - as_bad (_("No !sequence-number after !%s"), input_line_pointer); - goto err_report; - } - r = &alpha_reloc_op[0]; for (i = alpha_num_reloc_op - 1; i >= 0; i--, r++) - { - if (len == r->length - && memcmp (input_line_pointer, r->name, len) == 0) - break; - } + if (len == r->length && memcmp (p, r->name, len) == 0) + break; if (i < 0) { - as_bad (_("Unknown relocation operand: !%s"), - input_line_pointer); + as_bad (_("Unknown relocation operand: !%s"), p); goto err_report; } - input_line_pointer = ++p; - - /* Parse !sequence_number */ - memset (tok, '\0', sizeof (expressionS)); - expression (tok); + *input_line_pointer = c; + SKIP_WHITESPACE (); + if (*input_line_pointer != '!') + { + if (r->require_seq) + { + as_bad (_("no sequence number after !%s"), p); + goto err_report; + } - if (tok->X_op != O_constant - || ! ALPHA_RELOC_SEQUENCE_OK (tok->X_add_number)) + tok->X_add_number = 0; + } + else { - as_bad (_("Bad sequence number: !%s!%s"), - r->name, input_line_pointer); - goto err_report; + if (! r->allow_seq) + { + as_bad (_("!%s does not use a sequence number"), p); + goto err_report; + } + + input_line_pointer++; + + /* Parse !sequence_number */ + expression (tok); + if (tok->X_op != O_constant || tok->X_add_number <= 0) + { + as_bad (_("Bad sequence number: !%s!%s"), + r->name, input_line_pointer); + goto err_report; + } } tok->X_op = r->op; reloc_found_p = 1; ++tok; break; -#endif +#endif /* RELOC_OP_P */ case ',': ++input_line_pointer; @@ -2048,18 +1956,25 @@ fini: #ifdef DEBUG_ALPHA debug_exp (orig_tok, ntok - (end_tok - tok)); #endif +#ifdef RELOC_OP_P + is_end_of_line[(unsigned char) '!'] = 0; +#endif return ntok - (end_tok - tok); err: +#ifdef RELOC_OP_P + is_end_of_line[(unsigned char) '!'] = 0; +#endif input_line_pointer = old_input_line_pointer; return TOKENIZE_ERROR; -#ifdef RELOC_OP_P err_report: +#ifdef RELOC_OP_P + is_end_of_line[(unsigned char) '!'] = 0; +#endif input_line_pointer = old_input_line_pointer; return TOKENIZE_ERROR_REPORT; -#endif } /* Search forward through all variants of an opcode looking for a @@ -2247,7 +2162,6 @@ find_macro_match (first_macro, tok, pntok) case O_register: case O_pregister: case O_cpregister: -#ifdef RELOC_OP_P case O_literal: case O_lituse_base: case O_lituse_bytoff: @@ -2255,7 +2169,7 @@ find_macro_match (first_macro, tok, pntok) case O_gpdisp: case O_gprelhigh: case O_gprellow: -#endif + case O_gprel: goto match_failed; default: @@ -2264,38 +2178,6 @@ find_macro_match (first_macro, tok, pntok) ++tokidx; break; - /* optional !literal!<number> */ - case MACRO_LITERAL: -#ifdef RELOC_OP_P - if (tokidx < ntok && tok[tokidx].X_op == O_literal) - tokidx++; -#endif - break; - - /* optional !lituse_base!<number> */ - case MACRO_BASE: -#ifdef RELOC_OP_P - if (tokidx < ntok && tok[tokidx].X_op == O_lituse_base) - tokidx++; -#endif - break; - - /* optional !lituse_bytoff!<number> */ - case MACRO_BYTOFF: -#ifdef RELOC_OP_P - if (tokidx < ntok && tok[tokidx].X_op == O_lituse_bytoff) - tokidx++; -#endif - break; - - /* optional !lituse_jsr!<number> */ - case MACRO_JSR: -#ifdef RELOC_OP_P - if (tokidx < ntok && tok[tokidx].X_op == O_lituse_jsr) - tokidx++; -#endif - break; - match_failed: while (*arg != MACRO_EOA) ++arg; @@ -2370,12 +2252,15 @@ insert_operand (insn, operand, val, file, line) */ static void -assemble_insn (opcode, tok, ntok, insn) +assemble_insn (opcode, tok, ntok, insn, reloc) const struct alpha_opcode *opcode; const expressionS *tok; int ntok; struct alpha_insn *insn; + bfd_reloc_code_real_type reloc; { + const struct alpha_operand *reloc_operand = NULL; + const expressionS *reloc_exp = NULL; const unsigned char *argidx; unsigned image; int tokidx = 0; @@ -2431,24 +2316,85 @@ assemble_insn (opcode, tok, ntok, insn) case O_constant: image = insert_operand (image, operand, t->X_add_number, NULL, 0); + assert (reloc_operand == NULL); + reloc_operand = operand; + reloc_exp = t; break; default: - { - struct alpha_fixup *fixup; + /* This is only 0 for fields that should contain registers, + which means this pattern shouldn't have matched. */ + if (operand->default_reloc == 0) + abort (); - if (insn->nfixups >= MAX_INSN_FIXUPS) - as_fatal (_("too many fixups")); + /* There is one special case for which an insn receives two + relocations, and thus the user-supplied reloc does not + override the operand reloc. */ + if (operand->default_reloc == BFD_RELOC_ALPHA_HINT) + { + struct alpha_fixup *fixup; - fixup = &insn->fixups[insn->nfixups++]; + if (insn->nfixups >= MAX_INSN_FIXUPS) + as_fatal (_("too many fixups")); - fixup->exp = *t; - fixup->reloc = operand->default_reloc; - } + fixup = &insn->fixups[insn->nfixups++]; + fixup->exp = *t; + fixup->reloc = BFD_RELOC_ALPHA_HINT; + } + else + { + if (reloc == BFD_RELOC_UNUSED) + reloc = operand->default_reloc; + + assert (reloc_operand == NULL); + reloc_operand = operand; + reloc_exp = t; + } break; } } + if (reloc != BFD_RELOC_UNUSED) + { + struct alpha_fixup *fixup; + + if (insn->nfixups >= MAX_INSN_FIXUPS) + as_fatal (_("too many fixups")); + + /* ??? My but this is hacky. But the OSF/1 assembler uses the same + relocation tag for both ldah and lda with gpdisp. Choose the + correct internal relocation based on the opcode. */ + if (reloc == BFD_RELOC_ALPHA_GPDISP) + { + if (strcmp (opcode->name, "ldah") == 0) + reloc = BFD_RELOC_ALPHA_GPDISP_HI16; + else if (strcmp (opcode->name, "lda") == 0) + reloc = BFD_RELOC_ALPHA_GPDISP_LO16; + else + as_bad (_("invalid relocation for instruction")); + } + + /* If this is a real relocation (as opposed to a lituse hint), then + the relocation width should match the operand width. */ + else if (reloc < BFD_RELOC_UNUSED) + { + reloc_howto_type *reloc_howto + = bfd_reloc_type_lookup (stdoutput, reloc); + if (reloc_howto->bitsize != reloc_operand->bits) + { + as_bad (_("invalid relocation for field")); + return; + } + } + + fixup = &insn->fixups[insn->nfixups++]; + if (reloc_exp) + fixup->exp = *reloc_exp; + else + fixup->exp.X_op = O_absent; + fixup->reloc = reloc; + } + insn->insn = image; } @@ -2483,12 +2429,9 @@ emit_insn (insn) { const struct alpha_operand *operand = (const struct alpha_operand *) 0; struct alpha_fixup *fixup = &insn->fixups[i]; + struct alpha_reloc_tag *info; int size, pcrel; fixS *fixP; -#ifdef RELOC_OP_P - char buffer[ALPHA_RELOC_DIGITS]; - struct alpha_literal_tag *info; -#endif /* Some fixups are only used internally and so have no howto */ if ((int) fixup->reloc < 0) @@ -2497,43 +2440,24 @@ emit_insn (insn) size = 4; pcrel = ((operand->flags & AXP_OPERAND_RELATIVE) != 0); } + else if (fixup->reloc > BFD_RELOC_UNUSED + || fixup->reloc == BFD_RELOC_ALPHA_GPDISP_HI16 + || fixup->reloc == BFD_RELOC_ALPHA_GPDISP_LO16) + { + size = 2; + pcrel = 0; + } else - switch (fixup->reloc) - { -#ifdef OBJ_ELF - /* These relocation types are only used internally. */ - case BFD_RELOC_ALPHA_GPDISP_HI16: - case BFD_RELOC_ALPHA_GPDISP_LO16: - size = 2; - pcrel = 0; - break; -#endif -#ifdef RELOC_OP_P - /* and these also are internal only relocations */ - case BFD_RELOC_ALPHA_USER_LITERAL: - case BFD_RELOC_ALPHA_USER_LITUSE_BASE: - case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF: - case BFD_RELOC_ALPHA_USER_LITUSE_JSR: - case BFD_RELOC_ALPHA_USER_GPDISP: - case BFD_RELOC_ALPHA_USER_GPRELHIGH: - case BFD_RELOC_ALPHA_USER_GPRELLOW: - size = 2; - pcrel = 0; - break; -#endif + { + reloc_howto_type *reloc_howto + = bfd_reloc_type_lookup (stdoutput, fixup->reloc); + assert (reloc_howto); - default: - { - reloc_howto_type *reloc_howto - = bfd_reloc_type_lookup (stdoutput, fixup->reloc); - assert (reloc_howto); + size = bfd_get_reloc_size (reloc_howto); + assert (size >= 1 && size <= 4); - size = bfd_get_reloc_size (reloc_howto); - pcrel = reloc_howto->pc_relative; - } - assert (size >= 1 && size <= 4); - break; - } + pcrel = reloc_howto->pc_relative; + } fixP = fix_new_exp (frag_now, f - frag_now->fr_literal, size, &fixup->exp, pcrel, fixup->reloc); @@ -2542,79 +2466,75 @@ emit_insn (insn) and copy in the sequence number for the explicit relocations. */ switch (fixup->reloc) { - case BFD_RELOC_ALPHA_GPDISP_LO16: -#ifdef OBJ_ECOFF - case BFD_RELOC_ALPHA_LITERAL: -#endif -#ifdef OBJ_ELF - case BFD_RELOC_ALPHA_ELF_LITERAL: -#endif + case BFD_RELOC_ALPHA_HINT: case BFD_RELOC_GPREL32: + case BFD_RELOC_GPREL16: + case BFD_RELOC_ALPHA_GPREL_HI16: + case BFD_RELOC_ALPHA_GPREL_LO16: fixP->fx_no_overflow = 1; break; -#ifdef RELOC_OP_P - case BFD_RELOC_ALPHA_USER_LITERAL: + case BFD_RELOC_ALPHA_GPDISP_HI16: fixP->fx_no_overflow = 1; - sprintf (buffer, "!%u", insn->sequence[i]); - info = ((struct alpha_literal_tag *) - hash_find (alpha_literal_hash, buffer)); + fixP->fx_addsy = section_symbol (now_seg); + fixP->fx_offset = 0; - if (! info) - { - size_t len = strlen (buffer); - const char *errmsg; - - info = ((struct alpha_literal_tag *) - xcalloc (sizeof (struct alpha_literal_tag) + len, 1)); - - info->segment = now_seg; - info->sequence = insn->sequence[i]; - strcpy (info->string, buffer); - errmsg = hash_insert (alpha_literal_hash, info->string, (PTR) info); - if (errmsg) - as_bad (errmsg); - } + info = get_alpha_reloc_tag (insn->sequence); + if (++info->n_master > 1) + as_bad (_("too many ldah insns for !gpdisp!%ld"), insn->sequence); + if (info->segment != now_seg) + as_bad (_("both insns for !gpdisp!%ld must be in the same section"), + insn->sequence); + fixP->tc_fix_data.info = info; + break; - ++info->n_literals; + case BFD_RELOC_ALPHA_GPDISP_LO16: + fixP->fx_no_overflow = 1; + info = get_alpha_reloc_tag (insn->sequence); + if (++info->n_slaves > 1) + as_bad (_("too many lda insns for !gpdisp!%ld"), insn->sequence); if (info->segment != now_seg) - info->multi_section_p = 1; - + as_bad (_("both insns for !gpdisp!%ld must be in the same section"), + insn->sequence); fixP->tc_fix_data.info = info; + info->slaves = fixP; break; - case BFD_RELOC_ALPHA_USER_LITUSE_BASE: - case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF: - case BFD_RELOC_ALPHA_USER_LITUSE_JSR: - sprintf (buffer, "!%u", insn->sequence[i]); - info = ((struct alpha_literal_tag *) - hash_find (alpha_literal_hash, buffer)); + case BFD_RELOC_ALPHA_LITERAL: + case BFD_RELOC_ALPHA_ELF_LITERAL: + fixP->fx_no_overflow = 1; - if (! info) - { - size_t len = strlen (buffer); - const char *errmsg; - - info = ((struct alpha_literal_tag *) - xcalloc (sizeof (struct alpha_literal_tag) + len, 1)); - - info->segment = now_seg; - info->sequence = insn->sequence[i]; - strcpy (info->string, buffer); - errmsg = hash_insert (alpha_literal_hash, info->string, (PTR) info); - if (errmsg) - as_bad (errmsg); - } - info->n_lituses++; - fixP->tc_fix_data.info = info; - fixP->tc_fix_data.next_lituse = info->lituse; - info->lituse = fixP; + info = get_alpha_reloc_tag (insn->sequence); + info->n_master++; if (info->segment != now_seg) info->multi_section_p = 1; + fixP->tc_fix_data.info = info; + break; + case DUMMY_RELOC_LITUSE_ADDR: + fixP->fx_offset = LITUSE_ADDR; + goto do_lituse; + case DUMMY_RELOC_LITUSE_BASE: + fixP->fx_offset = LITUSE_BASE; + goto do_lituse; + case DUMMY_RELOC_LITUSE_BYTOFF: + fixP->fx_offset = LITUSE_BYTOFF; + goto do_lituse; + case DUMMY_RELOC_LITUSE_JSR: + fixP->fx_offset = LITUSE_JSR; + do_lituse: + fixP->fx_addsy = section_symbol (now_seg); + fixP->fx_r_type = BFD_RELOC_ALPHA_LITUSE; + + info = get_alpha_reloc_tag (insn->sequence); + info->n_slaves++; + fixP->tc_fix_data.info = info; + fixP->tc_fix_data.next_reloc = info->slaves; + info->slaves = fixP; + if (info->segment != now_seg) + info->multi_section_p = 1; break; -#endif default: if ((int) fixup->reloc < 0) @@ -2650,7 +2570,7 @@ assemble_tokens_to_insn (opname, tok, ntok, insn) opcode = find_opcode_match (opcode, tok, &ntok, &cpumatch); if (opcode) { - assemble_insn (opcode, tok, ntok, insn); + assemble_insn (opcode, tok, ntok, insn, BFD_RELOC_UNUSED); return; } else if (cpumatch) @@ -2677,9 +2597,15 @@ assemble_tokens (opname, tok, ntok, local_macros_on) const struct alpha_opcode *opcode; const struct alpha_macro *macro; int cpumatch = 1; + bfd_reloc_code_real_type reloc = BFD_RELOC_UNUSED; - /* search macros */ - if (local_macros_on) + /* If a user-specified relocation is present, this is not a macro. */ + if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) + { + reloc = ALPHA_RELOC_TABLE (tok[ntok - 1].X_op)->reloc; + ntok--; + } + else if (local_macros_on) { macro = ((const struct alpha_macro *) hash_find (alpha_macro_hash, opname)); @@ -2695,17 +2621,6 @@ assemble_tokens (opname, tok, ntok, local_macros_on) } } -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, opname); - ntok--; - } -#endif - /* search opcodes */ opcode = (const struct alpha_opcode *) hash_find (alpha_opcode_hash, opname); if (opcode) @@ -2715,18 +2630,25 @@ assemble_tokens (opname, tok, ntok, local_macros_on) if (opcode) { struct alpha_insn insn; - assemble_insn (opcode, tok, ntok, &insn); + assemble_insn (opcode, tok, ntok, &insn, reloc); + + /* Copy the sequence number for the reloc from the reloc token. */ + if (reloc != BFD_RELOC_UNUSED) + insn.sequence = tok[ntok].X_add_number; + emit_insn (&insn); return; } } if (found_something) - if (cpumatch) - as_bad (_("inappropriate arguments for opcode `%s'"), opname); - else - as_bad (_("opcode `%s' not supported for target %s"), opname, - alpha_target_name); + { + if (cpumatch) + as_bad (_("inappropriate arguments for opcode `%s'"), opname); + else + as_bad (_("opcode `%s' not supported for target %s"), opname, + alpha_target_name); + } else as_bad (_("unknown opcode `%s'"), opname); } @@ -2761,17 +2683,6 @@ FIXME expressionS newtok[3]; expressionS addend; -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, "ldgp"); - ntok--; - } -#endif - #ifdef OBJ_ECOFF if (regno (tok[2].X_add_number) == AXP_REG_PV) ecoff_set_gp_prolog_size (0); @@ -2795,6 +2706,7 @@ FIXME insn.nfixups = 1; insn.fixups[0].exp = addend; insn.fixups[0].reloc = BFD_RELOC_ALPHA_GPDISP_HI16; + insn.sequence = next_sequence_num; emit_insn (&insn); @@ -2809,6 +2721,7 @@ FIXME insn.nfixups = 1; insn.fixups[0].exp = addend; insn.fixups[0].reloc = BFD_RELOC_ALPHA_GPDISP_LO16; + insn.sequence = next_sequence_num--; emit_insn (&insn); #endif /* OBJ_ECOFF || OBJ_ELF */ @@ -2888,18 +2801,18 @@ add_to_link_pool (basesym, sym, addend) If explicit relocations of the form !literal!<number> are allowed, and used, then explict_reloc with be an expression pointer. - Finally, the return value is true if the calling macro may emit a - LITUSE reloc if otherwise appropriate. */ + Finally, the return value is nonzero if the calling macro may emit + a LITUSE reloc if otherwise appropriate; the return value is the + sequence number to use. */ -static int -load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) +static long +load_expression (targreg, exp, pbasereg, poffset) int targreg; const expressionS *exp; int *pbasereg; expressionS *poffset; - const expressionS *explicit_reloc; { - int emit_lituse = 0; + long emit_lituse = 0; offsetT addend = exp->X_add_number; int basereg = *pbasereg; struct alpha_insn insn; @@ -2949,9 +2862,9 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) assemble_tokens_to_insn ("ldq", newtok, 3, &insn); - assert (explicit_reloc == (const expressionS *) 0); assert (insn.nfixups == 1); insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITERAL; + insn.sequence = emit_lituse = next_sequence_num--; #endif /* OBJ_ECOFF */ #ifdef OBJ_ELF /* emit "ldq r, gotoff(gp)" */ @@ -2988,25 +2901,14 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) assemble_tokens_to_insn ("ldq", newtok, 3, &insn); assert (insn.nfixups == 1); - if (!explicit_reloc) - insn.fixups[0].reloc = BFD_RELOC_ALPHA_ELF_LITERAL; - else - { -#ifdef RELOC_OP_P - insn.fixups[0].reloc - = (ALPHA_RELOC_TABLE (explicit_reloc->X_op))->reloc; - insn.sequence[0] = explicit_reloc->X_add_number; -#else - abort (); -#endif - } + insn.fixups[0].reloc = BFD_RELOC_ALPHA_ELF_LITERAL; + insn.sequence = emit_lituse = next_sequence_num--; #endif /* OBJ_ELF */ #ifdef OBJ_EVAX offsetT link; /* Find symbol or symbol pointer in link section. */ - assert (explicit_reloc == (const expressionS *) 0); if (exp->X_add_symbol == alpha_evax_proc.symbol) { if (range_signed_16 (addend)) @@ -3048,8 +2950,6 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) emit_insn (&insn); #ifndef OBJ_EVAX - emit_lituse = 1; - if (basereg != alpha_gp_register && basereg != AXP_REG_ZERO) { /* emit "addq r, base, r" */ @@ -3065,14 +2965,12 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) break; case O_constant: - assert (explicit_reloc == (const expressionS *) 0); break; case O_subtract: /* Assume that this difference expression will be resolved to an absolute value and that that value will fit in 16 bits. */ - assert (explicit_reloc == (const expressionS *) 0); set_tok_reg (newtok[0], targreg); newtok[1] = *exp; set_tok_preg (newtok[2], basereg); @@ -3099,8 +2997,9 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) if (!range_signed_32 (addend)) { offsetT lit; + long seq_num = next_sequence_num--; - /* for 64-bit addends, just put it in the literal pool */ + /* For 64-bit addends, just put it in the literal pool. */ #ifdef OBJ_EVAX /* emit "ldq targreg, lit(basereg)" */ @@ -3160,6 +3059,7 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) #ifdef OBJ_ELF insn.fixups[0].reloc = BFD_RELOC_ALPHA_ELF_LITERAL; #endif + insn.sequence = seq_num; emit_insn (&insn); @@ -3171,16 +3071,10 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) assemble_tokens_to_insn ("ldq", newtok, 3, &insn); assert (insn.nfixups < MAX_INSN_FIXUPS); - if (insn.nfixups > 0) - { - memmove (&insn.fixups[1], &insn.fixups[0], - sizeof (struct alpha_fixup) * insn.nfixups); - } + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; + insn.fixups[insn.nfixups].exp.X_op = O_absent; insn.nfixups++; - insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITUSE; - insn.fixups[0].exp.X_op = O_symbol; - insn.fixups[0].exp.X_add_symbol = section_symbol (now_seg); - insn.fixups[0].exp.X_add_number = LITUSE_BASE; + insn.sequence = seq_num; emit_lituse = 0; emit_insn (&insn); @@ -3260,66 +3154,19 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc) large constants. */ static void -emit_lda (tok, ntok, opname) +emit_lda (tok, ntok, unused) const expressionS *tok; int ntok; - const PTR opname; + const PTR unused ATTRIBUTE_UNUSED; { int basereg; - const expressionS *reloc = (const expressionS *) 0; - -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const struct alpha_reloc_op_tag *r; - - reloc = &tok[ntok - 1]; - r = ALPHA_RELOC_TABLE (reloc->X_op); - switch (reloc->X_op) - { - default: - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc->X_add_number, (const char *) opname); - - reloc = (const expressionS *) 0; - ntok--; - break; - - case O_literal: - ntok--; - break; - - /* For lda $x,0($x)!lituse_base!y, don't use load_expression, since - it is really too general for our needs. Instead just generate the - lda directly. */ - case O_lituse_base: - if (ntok != 4 - || tok[0].X_op != O_register - || !is_ir_num (tok[0].X_add_number) - || tok[1].X_op != O_constant - || tok[2].X_op != O_pregister - || !is_ir_num (tok[2].X_add_number)) - { - as_bad (_("bad instruction format for lda !%s!%ld"), r->name, - (long) reloc->X_add_number); - - reloc = (const expressionS *) 0; - ntok--; - break; - } - - emit_loadstore (tok, ntok, "lda"); - return; - } - } -#endif if (ntok == 2) basereg = (tok[1].X_op == O_constant ? AXP_REG_ZERO : alpha_gp_register); else basereg = tok[2].X_add_number; - (void) load_expression (tok[0].X_add_number, &tok[1], &basereg, NULL, reloc); + (void) load_expression (tok[0].X_add_number, &tok[1], &basereg, NULL); } /* The ldah macro differs from the ldah instruction in that it has $31 @@ -3333,17 +3180,6 @@ emit_ldah (tok, ntok, unused) { expressionS newtok[3]; -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, "ldah"); - ntok--; - } -#endif - newtok[0] = tok[0]; newtok[1] = tok[1]; set_tok_preg (newtok[2], AXP_REG_ZERO); @@ -3361,83 +3197,31 @@ emit_ir_load (tok, ntok, opname) int ntok; const PTR opname; { - int basereg, lituse; + int basereg; + long lituse; expressionS newtok[3]; struct alpha_insn insn; -#ifdef RELOC_OP_P - const expressionS *reloc = (const expressionS *) 0; - - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const struct alpha_reloc_op_tag *r; - - reloc = &tok[ntok - 1]; - switch (reloc->X_op) - { - case O_lituse_base: - ntok--; - break; - - case O_literal: - if (strcmp ((const char *) opname, "ldq") == 0) - { - emit_lda (tok, ntok, opname); - return; - } - - /* fall through */ - default: - ntok--; - r = ALPHA_RELOC_TABLE (reloc->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc->X_add_number, (const char *) opname); - } - } -#endif - if (ntok == 2) basereg = (tok[1].X_op == O_constant ? AXP_REG_ZERO : alpha_gp_register); else basereg = tok[2].X_add_number; lituse = load_expression (tok[0].X_add_number, &tok[1], &basereg, - &newtok[1], (const expressionS *) 0); + &newtok[1]); newtok[0] = tok[0]; set_tok_preg (newtok[2], basereg); assemble_tokens_to_insn ((const char *) opname, newtok, 3, &insn); -#ifdef RELOC_OP_P - if (reloc) - { - int nfixups = insn.nfixups; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc->X_op); - - assert (nfixups < MAX_INSN_FIXUPS); - insn.fixups[nfixups].reloc = r->reloc; - insn.fixups[nfixups].exp.X_op = O_symbol; - insn.fixups[nfixups].exp.X_add_symbol = section_symbol (now_seg); - insn.fixups[nfixups].exp.X_add_number = r->lituse; - insn.sequence[nfixups] = reloc->X_add_number; - insn.nfixups++; - } -#endif - if (lituse) { assert (insn.nfixups < MAX_INSN_FIXUPS); - if (insn.nfixups > 0) - { - memmove (&insn.fixups[1], &insn.fixups[0], - sizeof (struct alpha_fixup) * insn.nfixups); - } + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; + insn.fixups[insn.nfixups].exp.X_op = O_absent; insn.nfixups++; - insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITUSE; - insn.fixups[0].exp.X_op = O_symbol; - insn.fixups[0].exp.X_add_symbol = section_symbol (now_seg); - insn.fixups[0].exp.X_add_number = LITUSE_BASE; + insn.sequence = lituse; } emit_insn (&insn); @@ -3452,25 +3236,11 @@ emit_loadstore (tok, ntok, opname) int ntok; const PTR opname; { - int basereg, lituse; + int basereg; + long lituse; expressionS newtok[3]; struct alpha_insn insn; -#ifdef RELOC_OP_P - const expressionS *reloc = (const expressionS *) 0; - - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - reloc = &tok[--ntok]; - if (reloc->X_op != O_lituse_base) - { - const struct alpha_reloc_op_tag *r = &alpha_reloc_op[reloc->X_md]; - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc->X_add_number, (const char *) opname); - } - } -#endif - if (ntok == 2) basereg = (tok[1].X_op == O_constant ? AXP_REG_ZERO : alpha_gp_register); else @@ -3481,8 +3251,7 @@ emit_loadstore (tok, ntok, opname) if (alpha_noat_on) as_bad (_("macro requires $at register while noat in effect")); - lituse = load_expression (AXP_REG_AT, &tok[1], &basereg, &newtok[1], - (const expressionS *) 0); + lituse = load_expression (AXP_REG_AT, &tok[1], &basereg, &newtok[1]); } else { @@ -3495,35 +3264,13 @@ emit_loadstore (tok, ntok, opname) assemble_tokens_to_insn ((const char *) opname, newtok, 3, &insn); -#ifdef RELOC_OP_P - if (reloc) - { - int nfixups = insn.nfixups; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc->X_op); - - assert (nfixups < MAX_INSN_FIXUPS); - insn.fixups[nfixups].reloc = r->reloc; - insn.fixups[nfixups].exp.X_op = O_symbol; - insn.fixups[nfixups].exp.X_add_symbol = section_symbol (now_seg); - insn.fixups[nfixups].exp.X_add_number = r->lituse; - insn.sequence[nfixups] = reloc->X_add_number; - insn.nfixups++; - } -#endif - if (lituse) { assert (insn.nfixups < MAX_INSN_FIXUPS); - if (insn.nfixups > 0) - { - memmove (&insn.fixups[1], &insn.fixups[0], - sizeof (struct alpha_fixup) * insn.nfixups); - } + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; + insn.fixups[insn.nfixups].exp.X_op = O_absent; insn.nfixups++; - insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITUSE; - insn.fixups[0].exp.X_op = O_symbol; - insn.fixups[0].exp.X_add_symbol = section_symbol (now_seg); - insn.fixups[0].exp.X_add_number = LITUSE_BASE; + insn.sequence = lituse; } emit_insn (&insn); @@ -3542,41 +3289,57 @@ emit_ldXu (tok, ntok, vlgsize) else { expressionS newtok[3]; - -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r - = ALPHA_RELOC_TABLE (reloc_exp->X_op); - - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, "ldbu/ldwu"); - ntok--; - } -#endif + struct alpha_insn insn; + int basereg; + long lituse; if (alpha_noat_on) as_bad (_("macro requires $at register while noat in effect")); + if (ntok == 2) + basereg = (tok[1].X_op == O_constant + ? AXP_REG_ZERO : alpha_gp_register); + else + basereg = tok[2].X_add_number; + /* emit "lda $at, exp" */ - memcpy (newtok, tok, sizeof (expressionS) * ntok); - newtok[0].X_add_number = AXP_REG_AT; - assemble_tokens ("lda", newtok, ntok, 1); + lituse = load_expression (AXP_REG_AT, &tok[1], &basereg, NULL); /* emit "ldq_u targ, 0($at)" */ newtok[0] = tok[0]; set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], AXP_REG_AT); - assemble_tokens ("ldq_u", newtok, 3, 1); + set_tok_preg (newtok[2], basereg); + assemble_tokens_to_insn ("ldq_u", newtok, 3, &insn); + + if (lituse) + { + assert (insn.nfixups < MAX_INSN_FIXUPS); + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; + insn.fixups[insn.nfixups].exp.X_op = O_absent; + insn.nfixups++; + insn.sequence = lituse; + } + + emit_insn (&insn); /* emit "extXl targ, $at, targ" */ - set_tok_reg (newtok[1], AXP_REG_AT); + set_tok_reg (newtok[1], basereg); newtok[2] = newtok[0]; - assemble_tokens (extXl_op[(long) vlgsize], newtok, 3, 1); + assemble_tokens_to_insn (extXl_op[(long) vlgsize], newtok, 3, &insn); + + if (lituse) + { + assert (insn.nfixups < MAX_INSN_FIXUPS); + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BYTOFF; + insn.fixups[insn.nfixups].exp.X_op = O_absent; + insn.nfixups++; + insn.sequence = lituse; + } + + emit_insn (&insn); } } @@ -3671,17 +3434,6 @@ emit_ldil (tok, ntok, unused) { expressionS newtok[2]; -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, "ldil"); - ntok--; - } -#endif - memcpy (newtok, tok, sizeof (newtok)); newtok[1].X_add_number = sign_extend_32 (tok[1].X_add_number); @@ -3703,35 +3455,75 @@ emit_stX (tok, ntok, vlgsize) else { expressionS newtok[3]; + struct alpha_insn insn; + int basereg; + long lituse; if (alpha_noat_on) as_bad (_("macro requires $at register while noat in effect")); + if (ntok == 2) + basereg = (tok[1].X_op == O_constant + ? AXP_REG_ZERO : alpha_gp_register); + else + basereg = tok[2].X_add_number; + /* emit "lda $at, exp" */ - memcpy (newtok, tok, sizeof (expressionS) * ntok); - newtok[0].X_add_number = AXP_REG_AT; - assemble_tokens ("lda", newtok, ntok, 1); + lituse = load_expression (AXP_REG_AT, &tok[1], &basereg, NULL); /* emit "ldq_u $t9, 0($at)" */ set_tok_reg (newtok[0], AXP_REG_T9); set_tok_const (newtok[1], 0); - set_tok_preg (newtok[2], AXP_REG_AT); - assemble_tokens ("ldq_u", newtok, 3, 1); + set_tok_preg (newtok[2], basereg); + assemble_tokens_to_insn ("ldq_u", newtok, 3, &insn); + + if (lituse) + { + assert (insn.nfixups < MAX_INSN_FIXUPS); + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; + insn.fixups[insn.nfixups].exp.X_op = O_absent; + insn.nfixups++; + insn.sequence = lituse; + } + + emit_insn (&insn); /* emit "insXl src, $at, $t10" */ newtok[0] = tok[0]; - set_tok_reg (newtok[1], AXP_REG_AT); + set_tok_reg (newtok[1], basereg); set_tok_reg (newtok[2], AXP_REG_T10); - assemble_tokens (insXl_op[lgsize], newtok, 3, 1); + assemble_tokens_to_insn (insXl_op[lgsize], newtok, 3, &insn); + + if (lituse) + { + assert (insn.nfixups < MAX_INSN_FIXUPS); + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BYTOFF; + insn.fixups[insn.nfixups].exp.X_op = O_absent; + insn.nfixups++; + insn.sequence = lituse; + } + + emit_insn (&insn); /* emit "mskXl $t9, $at, $t9" */ set_tok_reg (newtok[0], AXP_REG_T9); newtok[2] = newtok[0]; - assemble_tokens (mskXl_op[lgsize], newtok, 3, 1); + assemble_tokens_to_insn (mskXl_op[lgsize], newtok, 3, &insn); + + if (lituse) + { + assert (insn.nfixups < MAX_INSN_FIXUPS); + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BYTOFF; + insn.fixups[insn.nfixups].exp.X_op = O_absent; + insn.nfixups++; + insn.sequence = lituse; + } + + emit_insn (&insn); /* emit "or $t9, $t10, $t9" */ @@ -3740,9 +3532,20 @@ emit_stX (tok, ntok, vlgsize) /* emit "stq_u $t9, 0($at) */ - set_tok_const (newtok[1], 0); + set_tok_const(newtok[1], 0); set_tok_preg (newtok[2], AXP_REG_AT); - assemble_tokens ("stq_u", newtok, 3, 1); + assemble_tokens_to_insn ("stq_u", newtok, 3, &insn); + + if (lituse) + { + assert (insn.nfixups < MAX_INSN_FIXUPS); + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_BASE; + insn.fixups[insn.nfixups].exp.X_op = O_absent; + insn.nfixups++; + insn.sequence = lituse; + } + + emit_insn (&insn); } } @@ -3846,19 +3649,6 @@ emit_sextX (tok, ntok, vlgsize) int bitshift = 64 - 8 * (1 << lgsize); expressionS newtok[3]; -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r - = ALPHA_RELOC_TABLE (reloc_exp->X_op); - - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, "setxt"); - ntok--; - } -#endif - /* emit "sll src,bits,dst" */ newtok[0] = tok[0]; @@ -3905,17 +3695,6 @@ emit_division (tok, ntok, symname) symbolS *sym; expressionS newtok[3]; -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, (char char *) symname); - ntok--; - } -#endif - xr = regno (tok[0].X_add_number); yr = regno (tok[1].X_add_number); @@ -4015,17 +3794,6 @@ emit_division (tok, ntok, symname) symbolS *sym; expressionS newtok[3]; -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, (const char *) symname); - ntok--; - } -#endif - xr = regno (tok[0].X_add_number); yr = regno (tok[1].X_add_number); @@ -4120,18 +3888,8 @@ emit_jsrjmp (tok, ntok, vopname) const char *opname = (const char *) vopname; struct alpha_insn insn; expressionS newtok[3]; - int r, tokidx = 0, lituse = 0; - -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, opname); - ntok--; - } -#endif + int r, tokidx = 0; + long lituse = 0; if (tokidx < ntok && tok[tokidx].X_op == O_register) r = regno (tok[tokidx++].X_add_number); @@ -4149,8 +3907,7 @@ emit_jsrjmp (tok, ntok, vopname) else { int basereg = alpha_gp_register; - lituse = load_expression (r = AXP_REG_PV, &tok[tokidx], &basereg, NULL, - (const expressionS *) 0); + lituse = load_expression (r = AXP_REG_PV, &tok[tokidx], &basereg, NULL); } #endif @@ -4167,20 +3924,13 @@ emit_jsrjmp (tok, ntok, vopname) assemble_tokens_to_insn (opname, newtok, 3, &insn); - /* add the LITUSE fixup */ if (lituse) { assert (insn.nfixups < MAX_INSN_FIXUPS); - if (insn.nfixups > 0) - { - memmove (&insn.fixups[1], &insn.fixups[0], - sizeof (struct alpha_fixup) * insn.nfixups); - } + insn.fixups[insn.nfixups].reloc = DUMMY_RELOC_LITUSE_JSR; + insn.fixups[insn.nfixups].exp.X_op = O_absent; insn.nfixups++; - insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITUSE; - insn.fixups[0].exp.X_op = O_symbol; - insn.fixups[0].exp.X_add_symbol = section_symbol (now_seg); - insn.fixups[0].exp.X_add_number = LITUSE_JSR; + insn.sequence = lituse; } emit_insn (&insn); @@ -4199,17 +3949,6 @@ emit_retjcr (tok, ntok, vopname) expressionS newtok[3]; int r, tokidx = 0; -#ifdef RELOC_OP_P - if (ntok && USER_RELOC_P (tok[ntok - 1].X_op)) - { - const expressionS *reloc_exp = &tok[ntok - 1]; - const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op); - as_bad (_("Cannot use !%s!%d with %s"), r->name, - (int) reloc_exp->X_add_number, opname); - ntok--; - } -#endif - if (tokidx < ntok && tok[tokidx].X_op == O_register) r = regno (tok[tokidx++].X_add_number); else @@ -4472,7 +4211,7 @@ s_alpha_ent (dummy) input_line_pointer++; SKIP_WHITESPACE (); } - if (isdigit (*input_line_pointer) || *input_line_pointer == '-') + if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-') (void) get_absolute_expression (); } demand_empty_rest_of_line (); @@ -5657,6 +5396,34 @@ select_gp_value () } #endif /* OBJ_ECOFF */ +#ifdef OBJ_ELF +/* Map 's' to SHF_ALPHA_GPREL. */ + +int +alpha_elf_section_letter (letter, ptr_msg) + int letter; + char **ptr_msg; +{ + if (letter == 's') + return SHF_ALPHA_GPREL; + + *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S in string"); + return 0; +} + +/* Map SHF_ALPHA_GPREL to SEC_SMALL_DATA. */ + +flagword +alpha_elf_section_flags (flags, attr, type) + flagword flags; + int attr, type ATTRIBUTE_UNUSED; +{ + if (attr & SHF_ALPHA_GPREL) + flags |= SEC_SMALL_DATA; + return flags; +} +#endif /* OBJ_ELF */ + /* Called internally to handle all alignment needs. This takes care of eliding calls to frag_align if'n the cached current alignment says we've already got it, as well as taking care of the auto-align @@ -5703,10 +5470,10 @@ void alpha_handle_align (fragp) fragS *fragp; { - static char const unop[4] = { 0x00, 0x00, 0xe0, 0x2f }; + static char const unop[4] = { 0x00, 0x00, 0xfe, 0x2f }; static char const nopunop[8] = { 0x1f, 0x04, 0xff, 0x47, - 0x00, 0x00, 0xe0, 0x2f + 0x00, 0x00, 0xfe, 0x2f }; int bytes, fix; diff --git a/contrib/binutils/gas/config/tc-alpha.h b/contrib/binutils/gas/config/tc-alpha.h index 2fe20b7..fb428f9 100644 --- a/contrib/binutils/gas/config/tc-alpha.h +++ b/contrib/binutils/gas/config/tc-alpha.h @@ -1,5 +1,5 @@ /* This file is tc-alpha.h - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. Written by Ken Raeburn <raeburn@cygnus.com>. @@ -37,7 +37,6 @@ : "unknown-format") #define NEED_LITERAL_POOL -#define TC_HANDLES_FX_DONE #define REPEAT_CONS_EXPRESSIONS extern int alpha_force_relocation PARAMS ((struct fix *)); @@ -64,7 +63,7 @@ extern valueT alpha_gp_value; #define md_convert_frag(b,s,f) as_fatal ("alpha convert_frag\n") #define md_estimate_size_before_relax(f,s) \ - (as_fatal("estimate_size_before_relax called"),1) + (as_fatal ("estimate_size_before_relax called"),1) #define md_operand(x) #ifdef OBJ_EVAX @@ -107,6 +106,11 @@ extern void alpha_frob_file_before_adjust PARAMS ((void)); #define ELF_TC_SPECIAL_SECTIONS \ { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL }, \ { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_ALPHA_GPREL }, + +#define md_elf_section_letter alpha_elf_section_letter +extern int alpha_elf_section_letter PARAMS ((int, char **)); +#define md_elf_section_flags alpha_elf_section_flags +extern flagword alpha_elf_section_flags PARAMS ((flagword, int, int)); #endif /* Whether to add support for explict !relocation_op!sequence_number. At the @@ -116,11 +120,10 @@ extern void alpha_frob_file_before_adjust PARAMS ((void)); #define RELOC_OP_P #endif -#ifdef RELOC_OP_P -/* Before the relocations are written, reorder them, so that user supplied - !lituse relocations follow the appropriate !literal relocations. Also - convert the gas-internal relocations to the appropriate linker relocations. - */ +/* Before the relocations are written, reorder them, so that user + supplied !lituse relocations follow the appropriate !literal + relocations. Also convert the gas-internal relocations to the + appropriate linker relocations. */ #define tc_adjust_symtab() alpha_adjust_symtab () extern void alpha_adjust_symtab PARAMS ((void)); @@ -132,14 +135,14 @@ extern void alpha_adjust_symtab PARAMS ((void)); struct alpha_fix_tag { - struct fix *next_lituse; /* next !lituse */ - struct alpha_literal_tag *info; /* other members with same sequence */ + struct fix *next_reloc; /* next !lituse or !gpdisp */ + struct alpha_reloc_tag *info; /* other members with same sequence */ }; /* Initialize the TC_FIX_TYPE field. */ #define TC_INIT_FIX_DATA(fixP) \ do { \ - fixP->tc_fix_data.next_lituse = (struct fix *)0; \ + fixP->tc_fix_data.next_reloc = (struct fix *)0; \ fixP->tc_fix_data.info = (struct alpha_literal_tag *)0; \ } while (0) @@ -147,10 +150,9 @@ do { \ #define TC_FIX_DATA_PRINT(stream,fixP) \ do { \ if (fixP->tc_fix_data.info) \ - fprintf (stderr, "\tinfo = 0x%lx, next_lituse = 0x%lx\n", \ + fprintf (stderr, "\tinfo = 0x%lx, next_reloc = 0x%lx\n", \ (long)fixP->tc_fix_data.info, \ - (long)fixP->tc_fix_data.next_lituse); \ + (long)fixP->tc_fix_data.next_reloc); \ } while (0) -#endif #define DWARF2_LINE_MIN_INSN_LENGTH 4 diff --git a/contrib/binutils/gas/config/tc-arc.c b/contrib/binutils/gas/config/tc-arc.c index 45f54ac..3e829fa 100644 --- a/contrib/binutils/gas/config/tc-arc.c +++ b/contrib/binutils/gas/config/tc-arc.c @@ -21,9 +21,9 @@ 02111-1307, USA. */ #include <stdio.h> -#include <ctype.h> #include "libiberty.h" #include "as.h" +#include "safe-ctype.h" #include "subsegs.h" #include "opcode/arc.h" #include "../opcodes/arc-ext.h" @@ -46,9 +46,11 @@ static void arc_common PARAMS ((int)); static void arc_extinst PARAMS ((int)); static void arc_extoper PARAMS ((int)); static void arc_option PARAMS ((int)); -static int get_arc_exp_reloc_type PARAMS ((int, int, expressionS *, +static int get_arc_exp_reloc_type PARAMS ((int, int, expressionS *, expressionS *)); +static void init_opcode_tables PARAMS ((int)); + const struct suffix_classes { char *name; int len; @@ -393,7 +395,7 @@ md_assemble (str) } /* Skip leading white space. */ - while (isspace (*str)) + while (ISSPACE (*str)) str++; /* The instructions are stored in lists hashed by the first letter (though @@ -544,7 +546,7 @@ md_assemble (str) } /* Pick the suffix out and look it up via the hash table. */ - for (t = s; *t && isalnum (*t); ++t) + for (t = s; *t && ISALNUM (*t); ++t) continue; c = *t; *t = '\0'; @@ -736,7 +738,7 @@ md_assemble (str) insn and it is assumed that longer versions of insns appear before shorter ones (eg: lsr r2,r3,1 vs lsr r2,r3). */ - while (isspace (*str)) + while (ISSPACE (*str)) ++str; if (!is_end_of_line[(unsigned char) *str]) @@ -832,7 +834,7 @@ md_assemble (str) operands residing in the insn, but instead just use the operand index. This lets us easily handle fixups for any operand type, although that is admittedly not a very exciting - feature. We pick a BFD reloc type in md_apply_fix. + feature. We pick a BFD reloc type in md_apply_fix3. Limm values (4 byte immediate "constants") must be treated normally because they're not part of the actual insn word @@ -913,8 +915,7 @@ arc_extoper (opertype) p = name; while (*p) { - if (isupper (*p)) - *p = tolower (*p); + *p = TOLOWER (*p); p++; } @@ -1538,7 +1539,7 @@ arc_option (ignore) char * md_atof (type, litP, sizeP) - char type; + int type; char *litP; int *sizeP; { @@ -1546,7 +1547,7 @@ md_atof (type, litP, sizeP) LITTLENUM_TYPE words[MAX_LITTLENUMS]; LITTLENUM_TYPE *wordP; char *t; - char *atof_ieee (); + char * atof_ieee PARAMS ((char *, int, LITTLENUM_TYPE *)); switch (type) { @@ -1631,9 +1632,7 @@ void arc_code_symbol (expressionP) expressionS *expressionP; { - if (expressionP->X_op == O_symbol && expressionP->X_add_number == 0 - /* I think this test is unnecessary but just as a sanity check... */ - && expressionP->X_op_symbol == NULL) + if (expressionP->X_op == O_symbol && expressionP->X_add_number == 0) { expressionS two; expressionP->X_op = O_right_shift; @@ -1703,7 +1702,7 @@ md_operand (expressionP) while (ext_oper) { l = strlen (ext_oper->operand.name); - if (!strncmp (p, ext_oper->operand.name, l) && !isalnum(*(p + l))) + if (!strncmp (p, ext_oper->operand.name, l) && !ISALNUM (*(p + l))) { input_line_pointer += l + 1; expressionP->X_op = O_register; @@ -1715,7 +1714,7 @@ md_operand (expressionP) for (i = 0; i < arc_reg_names_count; i++) { l = strlen (arc_reg_names[i].name); - if (!strncmp (p, arc_reg_names[i].name, l) && !isalnum (*(p + l))) + if (!strncmp (p, arc_reg_names[i].name, l) && !ISALNUM (*(p + l))) { input_line_pointer += l + 1; expressionP->X_op = O_register; @@ -1881,16 +1880,16 @@ get_arc_exp_reloc_type (data_p, default_type, exp, expnew) and we attempt to completely resolve the reloc. If we can not do that, we determine the correct reloc code and put it back in the fixup. */ -int -md_apply_fix3 (fixP, valueP, seg) +void +md_apply_fix3 (fixP, valP, seg) fixS *fixP; - valueT *valueP; + valueT * valP; segT seg; { #if 0 char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; #endif - valueT value; + valueT value = * valP; /* FIXME FIXME FIXME: The value we are passed in *valueP includes the symbol values. Since we are using BFD_ASSEMBLER, if we are @@ -1904,13 +1903,10 @@ md_apply_fix3 (fixP, valueP, seg) result of md_pcrel_from. This is confusing. */ if (fixP->fx_addsy == (symbolS *) NULL) - { - value = *valueP; - fixP->fx_done = 1; - } + fixP->fx_done = 1; + else if (fixP->fx_pcrel) { - value = *valueP; /* ELF relocations are against symbols. If this symbol is in a different section then we need to leave it for the linker to deal with. Unfortunately, md_pcrel_from can't tell, @@ -1963,7 +1959,7 @@ md_apply_fix3 (fixP, valueP, seg) if (fixP->fx_done) { /* Nothing else to do here. */ - return 1; + return; } /* Determine a BFD reloc value based on the operand information. @@ -1998,7 +1994,7 @@ md_apply_fix3 (fixP, valueP, seg) as_bad_where (fixP->fx_file, fixP->fx_line, "unresolved expression that must be resolved"); fixP->fx_done = 1; - return 1; + return; } } else @@ -2038,8 +2034,6 @@ md_apply_fix3 (fixP, valueP, seg) } fixP->fx_addnumber = value; - - return 1; } /* Translate internal representation of relocation info to BFD target diff --git a/contrib/binutils/gas/config/tc-arc.h b/contrib/binutils/gas/config/tc-arc.h index 463400c..f144271 100644 --- a/contrib/binutils/gas/config/tc-arc.h +++ b/contrib/binutils/gas/config/tc-arc.h @@ -53,17 +53,13 @@ extern const char *arc_target_format; #define LISTING_HEADER "ARC GAS " -#define TC_HANDLES_FX_DONE - -#define MD_APPLY_FIX3 - /* The ARC needs to parse reloc specifiers in .word. */ -extern void arc_parse_cons_expression (); +extern void arc_parse_cons_expression PARAMS ((struct expressionS *, unsigned)); #define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) \ arc_parse_cons_expression (EXP, NBYTES) -extern void arc_cons_fix_new (); +extern void arc_cons_fix_new PARAMS ((struct frag *, int, int, struct expressionS *)); #define TC_CONS_FIX_NEW(FRAG, WHERE, NBYTES, EXP) \ arc_cons_fix_new (FRAG, WHERE, NBYTES, EXP) diff --git a/contrib/binutils/gas/config/tc-arm.c b/contrib/binutils/gas/config/tc-arm.c index a6e13a9..456e8c5 100644 --- a/contrib/binutils/gas/config/tc-arm.c +++ b/contrib/binutils/gas/config/tc-arm.c @@ -1,8 +1,9 @@ /* tc-arm.c -- Assemble for the ARM - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) Modified by David Taylor (dtaylor@armltd.co.uk) + Cirrus coprocessor mods by Aldy Hernandez (aldyh@redhat.com) This file is part of GAS, the GNU Assembler. @@ -21,10 +22,10 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include <ctype.h> #include <string.h> #define NO_RELOC 0 #include "as.h" +#include "safe-ctype.h" /* Need TARGET_CPU. */ #include "config.h" @@ -38,84 +39,132 @@ #include "dwarf2dbg.h" #endif -/* Types of processor to assemble for. */ -#define ARM_1 0x00000001 -#define ARM_2 0x00000002 -#define ARM_3 0x00000004 -#define ARM_250 ARM_3 -#define ARM_6 0x00000008 -#define ARM_7 ARM_6 /* Same core instruction set. */ -#define ARM_8 ARM_6 /* Same core instruction set. */ -#define ARM_9 ARM_6 /* Same core instruction set. */ -#define ARM_CPU_MASK 0x0000000f - -/* The following bitmasks control CPU extensions (ARM7 onwards): */ -#define ARM_EXT_LONGMUL 0x00000010 /* Allow long multiplies. */ -#define ARM_EXT_HALFWORD 0x00000020 /* Allow half word loads. */ -#define ARM_EXT_THUMB 0x00000040 /* Allow BX instruction. */ -#define ARM_EXT_V5 0x00000080 /* Allow CLZ, etc. */ -#define ARM_EXT_V5E 0x00000100 /* "El Segundo". */ -#define ARM_EXT_XSCALE 0x00000200 /* Allow MIA etc. */ - -/* Architectures are the sum of the base and extensions. */ -#define ARM_ARCH_V3M ARM_EXT_LONGMUL -#define ARM_ARCH_V4 (ARM_ARCH_V3M | ARM_EXT_HALFWORD) -#define ARM_ARCH_V4T (ARM_ARCH_V4 | ARM_EXT_THUMB) -#define ARM_ARCH_V5 (ARM_ARCH_V4 | ARM_EXT_V5) -#define ARM_ARCH_V5T (ARM_ARCH_V5 | ARM_EXT_THUMB) -#define ARM_ARCH_V5TE (ARM_ARCH_V5T | ARM_EXT_V5E) -#define ARM_ARCH_XSCALE (ARM_ARCH_V5TE | ARM_EXT_XSCALE) +/* XXX Set this to 1 after the next binutils release */ +#define WARN_DEPRECATED 0 + +/* The following bitmasks control CPU extensions: */ +#define ARM_EXT_V1 0x00000001 /* All processors (core set). */ +#define ARM_EXT_V2 0x00000002 /* Multiply instructions. */ +#define ARM_EXT_V2S 0x00000004 /* SWP instructions. */ +#define ARM_EXT_V3 0x00000008 /* MSR MRS. */ +#define ARM_EXT_V3M 0x00000010 /* Allow long multiplies. */ +#define ARM_EXT_V4 0x00000020 /* Allow half word loads. */ +#define ARM_EXT_V4T 0x00000040 /* Thumb v1. */ +#define ARM_EXT_V5 0x00000080 /* Allow CLZ, etc. */ +#define ARM_EXT_V5T 0x00000100 /* Thumb v2. */ +#define ARM_EXT_V5ExP 0x00000200 /* DSP core set. */ +#define ARM_EXT_V5E 0x00000400 /* DSP Double transfers. */ +#define ARM_EXT_V5J 0x00000800 /* Jazelle extension. */ + +/* Co-processor space extensions. */ +#define ARM_CEXT_XSCALE 0x00800000 /* Allow MIA etc. */ +#define ARM_CEXT_MAVERICK 0x00400000 /* Use Cirrus/DSP coprocessor. */ + +/* Architectures are the sum of the base and extensions. The ARM ARM (rev E) + defines the following: ARMv3, ARMv3M, ARMv4xM, ARMv4, ARMv4TxM, ARMv4T, + ARMv5xM, ARMv5, ARMv5TxM, ARMv5T, ARMv5TExP, ARMv5TE. To these we add + three more to cover cores prior to ARM6. Finally, there are cores which + implement further extensions in the co-processor space. */ +#define ARM_ARCH_V1 ARM_EXT_V1 +#define ARM_ARCH_V2 (ARM_ARCH_V1 | ARM_EXT_V2) +#define ARM_ARCH_V2S (ARM_ARCH_V2 | ARM_EXT_V2S) +#define ARM_ARCH_V3 (ARM_ARCH_V2S | ARM_EXT_V3) +#define ARM_ARCH_V3M (ARM_ARCH_V3 | ARM_EXT_V3M) +#define ARM_ARCH_V4xM (ARM_ARCH_V3 | ARM_EXT_V4) +#define ARM_ARCH_V4 (ARM_ARCH_V3M | ARM_EXT_V4) +#define ARM_ARCH_V4TxM (ARM_ARCH_V4xM | ARM_EXT_V4T) +#define ARM_ARCH_V4T (ARM_ARCH_V4 | ARM_EXT_V4T) +#define ARM_ARCH_V5xM (ARM_ARCH_V4xM | ARM_EXT_V5) +#define ARM_ARCH_V5 (ARM_ARCH_V4 | ARM_EXT_V5) +#define ARM_ARCH_V5TxM (ARM_ARCH_V5xM | ARM_EXT_V4T | ARM_EXT_V5T) +#define ARM_ARCH_V5T (ARM_ARCH_V5 | ARM_EXT_V4T | ARM_EXT_V5T) +#define ARM_ARCH_V5TExP (ARM_ARCH_V5T | ARM_EXT_V5ExP) +#define ARM_ARCH_V5TE (ARM_ARCH_V5TExP | ARM_EXT_V5E) +#define ARM_ARCH_V5TEJ (ARM_ARCH_V5TE | ARM_EXT_V5J) + +/* Processors with specific extensions in the co-processor space. */ +#define ARM_ARCH_XSCALE (ARM_ARCH_V5TE | ARM_CEXT_XSCALE) /* Some useful combinations: */ -#define ARM_ANY 0x00ffffff -#define ARM_2UP (ARM_ANY - ARM_1) -#define ARM_ALL ARM_2UP /* Not arm1 only. */ -#define ARM_3UP 0x00fffffc -#define ARM_6UP 0x00fffff8 /* Includes ARM7. */ +#define ARM_ANY 0x0000ffff /* Any basic core. */ +#define ARM_ALL 0x00ffffff /* Any core + co-processor */ +#define CPROC_ANY 0x00ff0000 /* Any co-processor */ +#define FPU_ANY 0xff000000 /* Note this is ~ARM_ALL. */ + + +#define FPU_FPA_EXT_V1 0x80000000 /* Base FPA instruction set. */ +#define FPU_FPA_EXT_V2 0x40000000 /* LFM/SFM. */ +#define FPU_VFP_EXT_NONE 0x20000000 /* Use VFP word-ordering. */ +#define FPU_VFP_EXT_V1xD 0x10000000 /* Base VFP instruction set. */ +#define FPU_VFP_EXT_V1 0x08000000 /* Double-precision insns. */ +#define FPU_VFP_EXT_V2 0x04000000 /* ARM10E VFPr1. */ +#define FPU_NONE 0 -#define FPU_CORE 0x80000000 -#define FPU_FPA10 0x40000000 -#define FPU_FPA11 0x40000000 -#define FPU_NONE 0 +#define FPU_ARCH_FPE FPU_FPA_EXT_V1 +#define FPU_ARCH_FPA (FPU_ARCH_FPE | FPU_FPA_EXT_V2) -/* Some useful combinations. */ -#define FPU_ALL 0xff000000 /* Note this is ~ARM_ANY. */ -#define FPU_MEMMULTI 0x7f000000 /* Not fpu_core. */ +#define FPU_ARCH_VFP FPU_VFP_EXT_NONE +#define FPU_ARCH_VFP_V1xD (FPU_VFP_EXT_V1xD | FPU_VFP_EXT_NONE) +#define FPU_ARCH_VFP_V1 (FPU_ARCH_VFP_V1xD | FPU_VFP_EXT_V1) +#define FPU_ARCH_VFP_V2 (FPU_ARCH_VFP_V1 | FPU_VFP_EXT_V2) + +/* Types of processor to assemble for. */ +#define ARM_1 ARM_ARCH_V1 +#define ARM_2 ARM_ARCH_V2 +#define ARM_3 ARM_ARCH_V2S +#define ARM_250 ARM_ARCH_V2S +#define ARM_6 ARM_ARCH_V3 +#define ARM_7 ARM_ARCH_V3 +#define ARM_8 ARM_ARCH_V4 +#define ARM_9 ARM_ARCH_V4T +#define ARM_STRONG ARM_ARCH_V4 +#define ARM_CPU_MASK 0x0000000f /* XXX? */ #ifndef CPU_DEFAULT #if defined __XSCALE__ -#define CPU_DEFAULT (ARM_9 | ARM_ARCH_XSCALE) +#define CPU_DEFAULT (ARM_ARCH_XSCALE) #else #if defined __thumb__ -#define CPU_DEFAULT (ARM_7 | ARM_ARCH_V4T) +#define CPU_DEFAULT (ARM_ARCH_V5T) #else -#define CPU_DEFAULT ARM_ALL +#define CPU_DEFAULT ARM_ANY #endif #endif #endif +/* For backwards compatibility we default to the FPA. */ #ifndef FPU_DEFAULT -#define FPU_DEFAULT FPU_ALL +#define FPU_DEFAULT FPU_ARCH_FPA #endif #define streq(a, b) (strcmp (a, b) == 0) #define skip_whitespace(str) while (*(str) == ' ') ++(str) -static unsigned long cpu_variant = CPU_DEFAULT | FPU_DEFAULT; +static unsigned long cpu_variant; static int target_oabi = 0; -#if defined OBJ_COFF || defined OBJ_ELF /* Flags stored in private area of BFD structure. */ -static boolean uses_apcs_26 = false; -static boolean atpcs = false; -static boolean support_interwork = false; -static boolean uses_apcs_float = false; -static boolean pic_code = false; -#endif +static int uses_apcs_26 = false; +static int atpcs = false; +static int support_interwork = false; +static int uses_apcs_float = false; +static int pic_code = false; + +/* Variables that we set while parsing command-line options. Once all + options have been read we re-process these values to set the real + assembly flags. */ +static int legacy_cpu = -1; +static int legacy_fpu = -1; + +static int mcpu_cpu_opt = -1; +static int mcpu_fpu_opt = -1; +static int march_cpu_opt = -1; +static int march_fpu_opt = -1; +static int mfpu_opt = -1; /* This array holds the chars that always start a comment. If the pre-processor is disabled, these aren't very useful. */ -CONST char comment_chars[] = "@"; +const char comment_chars[] = "@"; /* This array holds the chars that only start a comment at the beginning of a line. If the line seems to have the form '# 123 filename' @@ -124,19 +173,19 @@ CONST char comment_chars[] = "@"; first line of the input file. This is because the compiler outputs #NO_APP at the beginning of its output. */ /* Also note that comments like this one will always work. */ -CONST char line_comment_chars[] = "#"; +const char line_comment_chars[] = "#"; -CONST char line_separator_chars[] = ";"; +const char line_separator_chars[] = ";"; /* Chars that can be used to separate mant from exp in floating point numbers. */ -CONST char EXP_CHARS[] = "eE"; +const char EXP_CHARS[] = "eE"; /* Chars that mean this number is a floating point constant. */ /* As in 0f12.456 */ /* or 0d1.2345e12 */ -CONST char FLT_CHARS[] = "rRsSfFdDxXeEpP"; +const char FLT_CHARS[] = "rRsSfFdDxXeEpP"; /* Prefix characters that indicate the start of an immediate value. */ @@ -148,7 +197,7 @@ symbolS * GOT_symbol; #endif /* Size of relocation record. */ -CONST int md_reloc_size = 8; +const int md_reloc_size = 8; /* 0: assemble for ARM, 1: assemble for Thumb, @@ -163,9 +212,8 @@ typedef struct arm_fix struct arm_it { - CONST char * error; + const char * error; unsigned long instruction; - int suffix; int size; struct { @@ -230,7 +278,7 @@ static const struct asm_shift_name shift_names [] = #define NUM_FLOAT_VALS 8 -CONST char * fp_const[] = +const char * fp_const[] = { "0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "0.5", "10.0", 0 }; @@ -243,6 +291,10 @@ LITTLENUM_TYPE fp_values[NUM_FLOAT_VALS][MAX_LITTLENUMS]; #define FAIL (-1) #define SUCCESS (0) +/* Whether a Co-processor load/store operation accepts write-back forms. */ +#define CP_WB_OK 1 +#define CP_NO_WB 0 + #define SUFF_S 1 #define SUFF_D 2 #define SUFF_E 3 @@ -256,20 +308,19 @@ LITTLENUM_TYPE fp_values[NUM_FLOAT_VALS][MAX_LITTLENUMS]; #define CONDS_BIT 0x00100000 #define LOAD_BIT 0x00100000 -#define TRANS_BIT 0x00200000 #define DOUBLE_LOAD_FLAG 0x00000001 struct asm_cond { - CONST char * template; + const char * template; unsigned long value; }; -/* This is to save a hash look-up in the common case. */ #define COND_ALWAYS 0xe0000000 +#define COND_MASK 0xf0000000 -static CONST struct asm_cond conds[] = +static const struct asm_cond conds[] = { {"eq", 0x00000000}, {"ne", 0x10000000}, @@ -289,140 +340,9 @@ static CONST struct asm_cond conds[] = {"nv", 0xf0000000} }; -/* Warning: If the top bit of the set_bits is set, then the standard - instruction bitmask is ignored, and the new bitmask is taken from - the set_bits: */ -struct asm_flg -{ - CONST char * template; /* Basic flag string. */ - unsigned long set_bits; /* Bits to set. */ -}; - -static CONST struct asm_flg s_flag[] = -{ - {"s", CONDS_BIT}, - {NULL, 0} -}; - -static CONST struct asm_flg ldr_flags[] = -{ - {"d", DOUBLE_LOAD_FLAG}, - {"b", 0x00400000}, - {"t", TRANS_BIT}, - {"bt", 0x00400000 | TRANS_BIT}, - {"h", 0x801000b0}, - {"sh", 0x801000f0}, - {"sb", 0x801000d0}, - {NULL, 0} -}; - -static CONST struct asm_flg str_flags[] = -{ - {"d", DOUBLE_LOAD_FLAG}, - {"b", 0x00400000}, - {"t", TRANS_BIT}, - {"bt", 0x00400000 | TRANS_BIT}, - {"h", 0x800000b0}, - {NULL, 0} -}; - -static CONST struct asm_flg byte_flag[] = -{ - {"b", 0x00400000}, - {NULL, 0} -}; - -static CONST struct asm_flg cmp_flags[] = -{ - {"s", CONDS_BIT}, - {"p", 0x0010f000}, - {NULL, 0} -}; - -static CONST struct asm_flg ldm_flags[] = -{ - {"ed", 0x01800000}, - {"fd", 0x00800000}, - {"ea", 0x01000000}, - {"fa", 0x00000000}, - {"ib", 0x01800000}, - {"ia", 0x00800000}, - {"db", 0x01000000}, - {"da", 0x00000000}, - {NULL, 0} -}; - -static CONST struct asm_flg stm_flags[] = -{ - {"ed", 0x00000000}, - {"fd", 0x01000000}, - {"ea", 0x00800000}, - {"fa", 0x01800000}, - {"ib", 0x01800000}, - {"ia", 0x00800000}, - {"db", 0x01000000}, - {"da", 0x00000000}, - {NULL, 0} -}; - -static CONST struct asm_flg lfm_flags[] = -{ - {"fd", 0x00800000}, - {"ea", 0x01000000}, - {NULL, 0} -}; - -static CONST struct asm_flg sfm_flags[] = -{ - {"fd", 0x01000000}, - {"ea", 0x00800000}, - {NULL, 0} -}; - -static CONST struct asm_flg round_flags[] = -{ - {"p", 0x00000020}, - {"m", 0x00000040}, - {"z", 0x00000060}, - {NULL, 0} -}; - -/* The implementation of the FIX instruction is broken on some assemblers, - in that it accepts a precision specifier as well as a rounding specifier, - despite the fact that this is meaningless. To be more compatible, we - accept it as well, though of course it does not set any bits. */ -static CONST struct asm_flg fix_flags[] = -{ - {"p", 0x00000020}, - {"m", 0x00000040}, - {"z", 0x00000060}, - {"sp", 0x00000020}, - {"sm", 0x00000040}, - {"sz", 0x00000060}, - {"dp", 0x00000020}, - {"dm", 0x00000040}, - {"dz", 0x00000060}, - {"ep", 0x00000020}, - {"em", 0x00000040}, - {"ez", 0x00000060}, - {NULL, 0} -}; - -static CONST struct asm_flg except_flag[] = -{ - {"e", 0x00400000}, - {NULL, 0} -}; - -static CONST struct asm_flg cplong_flag[] = -{ - {"l", 0x00400000}, - {NULL, 0} -}; - struct asm_psr { - CONST char * template; + const char * template; boolean cpsr; unsigned long field; }; @@ -438,7 +358,7 @@ struct asm_psr #define PSR_s (1 << 2) #define PSR_f (1 << 3) -static CONST struct asm_psr psrs[] = +static const struct asm_psr psrs[] = { {"CPSR", true, PSR_c | PSR_f}, {"CPSR_all", true, PSR_c | PSR_f}, @@ -579,77 +499,395 @@ static CONST struct asm_psr psrs[] = {"SPSR_cxsf", false, PSR_c | PSR_x | PSR_s | PSR_f}, }; +enum vfp_dp_reg_pos +{ + VFP_REG_Dd, VFP_REG_Dm, VFP_REG_Dn +}; + +enum vfp_sp_reg_pos +{ + VFP_REG_Sd, VFP_REG_Sm, VFP_REG_Sn +}; + +enum vfp_ldstm_type +{ + VFP_LDSTMIA, VFP_LDSTMDB, VFP_LDSTMIAX, VFP_LDSTMDBX +}; + +/* VFP system registers. */ +struct vfp_reg +{ + const char *name; + unsigned long regno; +}; + +static const struct vfp_reg vfp_regs[] = +{ + {"fpsid", 0x00000000}, + {"FPSID", 0x00000000}, + {"fpscr", 0x00010000}, + {"FPSCR", 0x00010000}, + {"fpexc", 0x00080000}, + {"FPEXC", 0x00080000} +}; + +/* Structure for a hash table entry for a register. */ +struct reg_entry +{ + const char * name; + int number; +}; + +/* Some well known registers that we refer to directly elsewhere. */ +#define REG_SP 13 +#define REG_LR 14 +#define REG_PC 15 + +/* These are the standard names. Users can add aliases with .req. */ +/* Integer Register Numbers. */ +static const struct reg_entry rn_table[] = +{ + {"r0", 0}, {"r1", 1}, {"r2", 2}, {"r3", 3}, + {"r4", 4}, {"r5", 5}, {"r6", 6}, {"r7", 7}, + {"r8", 8}, {"r9", 9}, {"r10", 10}, {"r11", 11}, + {"r12", 12}, {"r13", REG_SP}, {"r14", REG_LR}, {"r15", REG_PC}, + /* ATPCS Synonyms. */ + {"a1", 0}, {"a2", 1}, {"a3", 2}, {"a4", 3}, + {"v1", 4}, {"v2", 5}, {"v3", 6}, {"v4", 7}, + {"v5", 8}, {"v6", 9}, {"v7", 10}, {"v8", 11}, + /* Well-known aliases. */ + {"wr", 7}, + {"sb", 9}, {"sl", 10}, {"fp", 11}, + {"ip", 12}, {"sp", REG_SP}, {"lr", REG_LR}, {"pc", REG_PC}, + {NULL, 0} +}; + +/* Co-processor Numbers. */ +static const struct reg_entry cp_table[] = +{ + {"p0", 0}, {"p1", 1}, {"p2", 2}, {"p3", 3}, + {"p4", 4}, {"p5", 5}, {"p6", 6}, {"p7", 7}, + {"p8", 8}, {"p9", 9}, {"p10", 10}, {"p11", 11}, + {"p12", 12}, {"p13", 13}, {"p14", 14}, {"p15", 15}, + {NULL, 0} +}; + +/* Co-processor Register Numbers. */ +static const struct reg_entry cn_table[] = +{ + {"c0", 0}, {"c1", 1}, {"c2", 2}, {"c3", 3}, + {"c4", 4}, {"c5", 5}, {"c6", 6}, {"c7", 7}, + {"c8", 8}, {"c9", 9}, {"c10", 10}, {"c11", 11}, + {"c12", 12}, {"c13", 13}, {"c14", 14}, {"c15", 15}, + /* Not really valid, but kept for back-wards compatibility. */ + {"cr0", 0}, {"cr1", 1}, {"cr2", 2}, {"cr3", 3}, + {"cr4", 4}, {"cr5", 5}, {"cr6", 6}, {"cr7", 7}, + {"cr8", 8}, {"cr9", 9}, {"cr10", 10}, {"cr11", 11}, + {"cr12", 12}, {"cr13", 13}, {"cr14", 14}, {"cr15", 15}, + {NULL, 0} +}; + +/* FPA Registers. */ +static const struct reg_entry fn_table[] = +{ + {"f0", 0}, {"f1", 1}, {"f2", 2}, {"f3", 3}, + {"f4", 4}, {"f5", 5}, {"f6", 6}, {"f7", 7}, + {NULL, 0} +}; + +/* VFP SP Registers. */ +static const struct reg_entry sn_table[] = +{ + {"s0", 0}, {"s1", 1}, {"s2", 2}, {"s3", 3}, + {"s4", 4}, {"s5", 5}, {"s6", 6}, {"s7", 7}, + {"s8", 8}, {"s9", 9}, {"s10", 10}, {"s11", 11}, + {"s12", 12}, {"s13", 13}, {"s14", 14}, {"s15", 15}, + {"s16", 16}, {"s17", 17}, {"s18", 18}, {"s19", 19}, + {"s20", 20}, {"s21", 21}, {"s22", 22}, {"s23", 23}, + {"s24", 24}, {"s25", 25}, {"s26", 26}, {"s27", 27}, + {"s28", 28}, {"s29", 29}, {"s30", 30}, {"s31", 31}, + {NULL, 0} +}; + +/* VFP DP Registers. */ +static const struct reg_entry dn_table[] = +{ + {"d0", 0}, {"d1", 1}, {"d2", 2}, {"d3", 3}, + {"d4", 4}, {"d5", 5}, {"d6", 6}, {"d7", 7}, + {"d8", 8}, {"d9", 9}, {"d10", 10}, {"d11", 11}, + {"d12", 12}, {"d13", 13}, {"d14", 14}, {"d15", 15}, + {NULL, 0} +}; + +/* Maverick DSP coprocessor registers. */ +static const struct reg_entry mav_mvf_table[] = +{ + {"mvf0", 0}, {"mvf1", 1}, {"mvf2", 2}, {"mvf3", 3}, + {"mvf4", 4}, {"mvf5", 5}, {"mvf6", 6}, {"mvf7", 7}, + {"mvf8", 8}, {"mvf9", 9}, {"mvf10", 10}, {"mvf11", 11}, + {"mvf12", 12}, {"mvf13", 13}, {"mvf14", 14}, {"mvf15", 15}, + {NULL, 0} +}; + +static const struct reg_entry mav_mvd_table[] = +{ + {"mvd0", 0}, {"mvd1", 1}, {"mvd2", 2}, {"mvd3", 3}, + {"mvd4", 4}, {"mvd5", 5}, {"mvd6", 6}, {"mvd7", 7}, + {"mvd8", 8}, {"mvd9", 9}, {"mvd10", 10}, {"mvd11", 11}, + {"mvd12", 12}, {"mvd13", 13}, {"mvd14", 14}, {"mvd15", 15}, + {NULL, 0} +}; + +static const struct reg_entry mav_mvfx_table[] = +{ + {"mvfx0", 0}, {"mvfx1", 1}, {"mvfx2", 2}, {"mvfx3", 3}, + {"mvfx4", 4}, {"mvfx5", 5}, {"mvfx6", 6}, {"mvfx7", 7}, + {"mvfx8", 8}, {"mvfx9", 9}, {"mvfx10", 10}, {"mvfx11", 11}, + {"mvfx12", 12}, {"mvfx13", 13}, {"mvfx14", 14}, {"mvfx15", 15}, + {NULL, 0} +}; + +static const struct reg_entry mav_mvdx_table[] = +{ + {"mvdx0", 0}, {"mvdx1", 1}, {"mvdx2", 2}, {"mvdx3", 3}, + {"mvdx4", 4}, {"mvdx5", 5}, {"mvdx6", 6}, {"mvdx7", 7}, + {"mvdx8", 8}, {"mvdx9", 9}, {"mvdx10", 10}, {"mvdx11", 11}, + {"mvdx12", 12}, {"mvdx13", 13}, {"mvdx14", 14}, {"mvdx15", 15}, + {NULL, 0} +}; + +static const struct reg_entry mav_mvax_table[] = +{ + {"mvax0", 0}, {"mvax1", 1}, {"mvax2", 2}, {"mvax3", 3}, + {NULL, 0} +}; + +static const struct reg_entry mav_dspsc_table[] = +{ + {"dspsc", 0}, + {NULL, 0} +}; + +struct reg_map +{ + const struct reg_entry *names; + int max_regno; + struct hash_control *htab; + const char *expected; +}; + +struct reg_map all_reg_maps[] = +{ + {rn_table, 15, NULL, N_("ARM register expected")}, + {cp_table, 15, NULL, N_("bad or missing co-processor number")}, + {cn_table, 15, NULL, N_("co-processor register expected")}, + {fn_table, 7, NULL, N_("FPA register expected")}, + {sn_table, 31, NULL, N_("VFP single precision register expected")}, + {dn_table, 15, NULL, N_("VFP double precision register expected")}, + {mav_mvf_table, 15, NULL, N_("Maverick MVF register expected")}, + {mav_mvd_table, 15, NULL, N_("Maverick MVD register expected")}, + {mav_mvfx_table, 15, NULL, N_("Maverick MVFX register expected")}, + {mav_mvdx_table, 15, NULL, N_("Maverick MVFX register expected")}, + {mav_mvax_table, 3, NULL, N_("Maverick MVAX register expected")}, + {mav_dspsc_table, 0, NULL, N_("Maverick DSPSC register expected")}, +}; + +/* Enumeration matching entries in table above. */ +enum arm_reg_type +{ + REG_TYPE_RN = 0, +#define REG_TYPE_FIRST REG_TYPE_RN + REG_TYPE_CP = 1, + REG_TYPE_CN = 2, + REG_TYPE_FN = 3, + REG_TYPE_SN = 4, + REG_TYPE_DN = 5, + REG_TYPE_MVF = 6, + REG_TYPE_MVD = 7, + REG_TYPE_MVFX = 8, + REG_TYPE_MVDX = 9, + REG_TYPE_MVAX = 10, + REG_TYPE_DSPSC = 11, + + REG_TYPE_MAX = 12 +}; + /* Functions called by parser. */ /* ARM instructions. */ -static void do_arit PARAMS ((char *, unsigned long)); -static void do_cmp PARAMS ((char *, unsigned long)); -static void do_mov PARAMS ((char *, unsigned long)); -static void do_ldst PARAMS ((char *, unsigned long)); -static void do_ldmstm PARAMS ((char *, unsigned long)); -static void do_branch PARAMS ((char *, unsigned long)); -static void do_swi PARAMS ((char *, unsigned long)); +static void do_arit PARAMS ((char *)); +static void do_cmp PARAMS ((char *)); +static void do_mov PARAMS ((char *)); +static void do_ldst PARAMS ((char *)); +static void do_ldstt PARAMS ((char *)); +static void do_ldmstm PARAMS ((char *)); +static void do_branch PARAMS ((char *)); +static void do_swi PARAMS ((char *)); + /* Pseudo Op codes. */ -static void do_adr PARAMS ((char *, unsigned long)); -static void do_adrl PARAMS ((char *, unsigned long)); -static void do_nop PARAMS ((char *, unsigned long)); -/* ARM 2. */ -static void do_mul PARAMS ((char *, unsigned long)); -static void do_mla PARAMS ((char *, unsigned long)); -/* ARM 3. */ -static void do_swap PARAMS ((char *, unsigned long)); -/* ARM 6. */ -static void do_msr PARAMS ((char *, unsigned long)); -static void do_mrs PARAMS ((char *, unsigned long)); -/* ARM 7M. */ -static void do_mull PARAMS ((char *, unsigned long)); -/* ARM THUMB. */ -static void do_bx PARAMS ((char *, unsigned long)); - -/* ARM_EXT_XScale. */ -static void do_mia PARAMS ((char *, unsigned long)); -static void do_mar PARAMS ((char *, unsigned long)); -static void do_mra PARAMS ((char *, unsigned long)); -static void do_pld PARAMS ((char *, unsigned long)); -static void do_ldrd PARAMS ((char *, unsigned long)); - -/* ARM_EXT_V5. */ -static void do_blx PARAMS ((char *, unsigned long)); -static void do_bkpt PARAMS ((char *, unsigned long)); -static void do_clz PARAMS ((char *, unsigned long)); -static void do_lstc2 PARAMS ((char *, unsigned long)); -static void do_cdp2 PARAMS ((char *, unsigned long)); -static void do_co_reg2 PARAMS ((char *, unsigned long)); +static void do_adr PARAMS ((char *)); +static void do_adrl PARAMS ((char *)); +static void do_empty PARAMS ((char *)); -static void do_t_blx PARAMS ((char *)); -static void do_t_bkpt PARAMS ((char *)); +/* ARM v2. */ +static void do_mul PARAMS ((char *)); +static void do_mla PARAMS ((char *)); + +/* ARM v2S. */ +static void do_swap PARAMS ((char *)); + +/* ARM v3. */ +static void do_msr PARAMS ((char *)); +static void do_mrs PARAMS ((char *)); + +/* ARM v3M. */ +static void do_mull PARAMS ((char *)); -/* ARM_EXT_V5E. */ -static void do_smla PARAMS ((char *, unsigned long)); -static void do_smlal PARAMS ((char *, unsigned long)); -static void do_smul PARAMS ((char *, unsigned long)); -static void do_qadd PARAMS ((char *, unsigned long)); -static void do_co_reg2c PARAMS ((char *, unsigned long)); +/* ARM v4. */ +static void do_ldstv4 PARAMS ((char *)); + +/* ARM v4T. */ +static void do_bx PARAMS ((char *)); + +/* ARM v5T. */ +static void do_blx PARAMS ((char *)); +static void do_bkpt PARAMS ((char *)); +static void do_clz PARAMS ((char *)); +static void do_lstc2 PARAMS ((char *)); +static void do_cdp2 PARAMS ((char *)); +static void do_co_reg2 PARAMS ((char *)); + +/* ARM v5TExP. */ +static void do_smla PARAMS ((char *)); +static void do_smlal PARAMS ((char *)); +static void do_smul PARAMS ((char *)); +static void do_qadd PARAMS ((char *)); + +/* ARM v5TE. */ +static void do_pld PARAMS ((char *)); +static void do_ldrd PARAMS ((char *)); +static void do_co_reg2c PARAMS ((char *)); + +/* ARM v5TEJ. */ +static void do_bxj PARAMS ((char *)); /* Coprocessor Instructions. */ -static void do_cdp PARAMS ((char *, unsigned long)); -static void do_lstc PARAMS ((char *, unsigned long)); -static void do_co_reg PARAMS ((char *, unsigned long)); -static void do_fp_ctrl PARAMS ((char *, unsigned long)); -static void do_fp_ldst PARAMS ((char *, unsigned long)); -static void do_fp_ldmstm PARAMS ((char *, unsigned long)); -static void do_fp_dyadic PARAMS ((char *, unsigned long)); -static void do_fp_monadic PARAMS ((char *, unsigned long)); -static void do_fp_cmp PARAMS ((char *, unsigned long)); -static void do_fp_from_reg PARAMS ((char *, unsigned long)); -static void do_fp_to_reg PARAMS ((char *, unsigned long)); - -static void fix_new_arm PARAMS ((fragS *, int, short, expressionS *, int, int)); -static int arm_reg_parse PARAMS ((char **)); -static CONST struct asm_psr * arm_psr_parse PARAMS ((char **)); -static void symbol_locate PARAMS ((symbolS *, CONST char *, segT, valueT, fragS *)); +static void do_cdp PARAMS ((char *)); +static void do_lstc PARAMS ((char *)); +static void do_co_reg PARAMS ((char *)); + +/* FPA instructions. */ +static void do_fpa_ctrl PARAMS ((char *)); +static void do_fpa_ldst PARAMS ((char *)); +static void do_fpa_ldmstm PARAMS ((char *)); +static void do_fpa_dyadic PARAMS ((char *)); +static void do_fpa_monadic PARAMS ((char *)); +static void do_fpa_cmp PARAMS ((char *)); +static void do_fpa_from_reg PARAMS ((char *)); +static void do_fpa_to_reg PARAMS ((char *)); + +/* VFP instructions. */ +static void do_vfp_sp_monadic PARAMS ((char *)); +static void do_vfp_dp_monadic PARAMS ((char *)); +static void do_vfp_sp_dyadic PARAMS ((char *)); +static void do_vfp_dp_dyadic PARAMS ((char *)); +static void do_vfp_reg_from_sp PARAMS ((char *)); +static void do_vfp_sp_from_reg PARAMS ((char *)); +static void do_vfp_sp_reg2 PARAMS ((char *)); +static void do_vfp_reg_from_dp PARAMS ((char *)); +static void do_vfp_reg2_from_dp PARAMS ((char *)); +static void do_vfp_dp_from_reg PARAMS ((char *)); +static void do_vfp_dp_from_reg2 PARAMS ((char *)); +static void do_vfp_reg_from_ctrl PARAMS ((char *)); +static void do_vfp_ctrl_from_reg PARAMS ((char *)); +static void do_vfp_sp_ldst PARAMS ((char *)); +static void do_vfp_dp_ldst PARAMS ((char *)); +static void do_vfp_sp_ldstmia PARAMS ((char *)); +static void do_vfp_sp_ldstmdb PARAMS ((char *)); +static void do_vfp_dp_ldstmia PARAMS ((char *)); +static void do_vfp_dp_ldstmdb PARAMS ((char *)); +static void do_vfp_xp_ldstmia PARAMS ((char *)); +static void do_vfp_xp_ldstmdb PARAMS ((char *)); +static void do_vfp_sp_compare_z PARAMS ((char *)); +static void do_vfp_dp_compare_z PARAMS ((char *)); +static void do_vfp_dp_sp_cvt PARAMS ((char *)); +static void do_vfp_sp_dp_cvt PARAMS ((char *)); + +/* XScale. */ +static void do_xsc_mia PARAMS ((char *)); +static void do_xsc_mar PARAMS ((char *)); +static void do_xsc_mra PARAMS ((char *)); + +/* Maverick. */ +static void do_mav_binops PARAMS ((char *, int, enum arm_reg_type, + enum arm_reg_type)); +static void do_mav_binops_1a PARAMS ((char *)); +static void do_mav_binops_1b PARAMS ((char *)); +static void do_mav_binops_1c PARAMS ((char *)); +static void do_mav_binops_1d PARAMS ((char *)); +static void do_mav_binops_1e PARAMS ((char *)); +static void do_mav_binops_1f PARAMS ((char *)); +static void do_mav_binops_1g PARAMS ((char *)); +static void do_mav_binops_1h PARAMS ((char *)); +static void do_mav_binops_1i PARAMS ((char *)); +static void do_mav_binops_1j PARAMS ((char *)); +static void do_mav_binops_1k PARAMS ((char *)); +static void do_mav_binops_1l PARAMS ((char *)); +static void do_mav_binops_1m PARAMS ((char *)); +static void do_mav_binops_1n PARAMS ((char *)); +static void do_mav_binops_1o PARAMS ((char *)); +static void do_mav_binops_2a PARAMS ((char *)); +static void do_mav_binops_2b PARAMS ((char *)); +static void do_mav_binops_2c PARAMS ((char *)); +static void do_mav_binops_3a PARAMS ((char *)); +static void do_mav_binops_3b PARAMS ((char *)); +static void do_mav_binops_3c PARAMS ((char *)); +static void do_mav_binops_3d PARAMS ((char *)); +static void do_mav_triple PARAMS ((char *, int, enum arm_reg_type, + enum arm_reg_type, + enum arm_reg_type)); +static void do_mav_triple_4a PARAMS ((char *)); +static void do_mav_triple_4b PARAMS ((char *)); +static void do_mav_triple_5a PARAMS ((char *)); +static void do_mav_triple_5b PARAMS ((char *)); +static void do_mav_triple_5c PARAMS ((char *)); +static void do_mav_triple_5d PARAMS ((char *)); +static void do_mav_triple_5e PARAMS ((char *)); +static void do_mav_triple_5f PARAMS ((char *)); +static void do_mav_triple_5g PARAMS ((char *)); +static void do_mav_triple_5h PARAMS ((char *)); +static void do_mav_quad PARAMS ((char *, int, enum arm_reg_type, + enum arm_reg_type, + enum arm_reg_type, + enum arm_reg_type)); +static void do_mav_quad_6a PARAMS ((char *)); +static void do_mav_quad_6b PARAMS ((char *)); +static void do_mav_dspsc_1 PARAMS ((char *)); +static void do_mav_dspsc_2 PARAMS ((char *)); +static void do_mav_shift PARAMS ((char *, enum arm_reg_type, + enum arm_reg_type)); +static void do_mav_shift_1 PARAMS ((char *)); +static void do_mav_shift_2 PARAMS ((char *)); +static void do_mav_ldst PARAMS ((char *, enum arm_reg_type)); +static void do_mav_ldst_1 PARAMS ((char *)); +static void do_mav_ldst_2 PARAMS ((char *)); +static void do_mav_ldst_3 PARAMS ((char *)); +static void do_mav_ldst_4 PARAMS ((char *)); + +static int mav_reg_required_here PARAMS ((char **, int, + enum arm_reg_type)); +static int mav_parse_offset PARAMS ((char **, int *)); + +static void fix_new_arm PARAMS ((fragS *, int, short, expressionS *, + int, int)); +static int arm_reg_parse PARAMS ((char **, struct hash_control *)); +static enum arm_reg_type arm_reg_parse_any PARAMS ((char *)); +static const struct asm_psr * arm_psr_parse PARAMS ((char **)); +static void symbol_locate PARAMS ((symbolS *, const char *, segT, valueT, + fragS *)); static int add_to_lit_pool PARAMS ((void)); static unsigned validate_immediate PARAMS ((unsigned)); -static unsigned validate_immediate_twopart PARAMS ((unsigned int, unsigned int *)); +static unsigned validate_immediate_twopart PARAMS ((unsigned int, + unsigned int *)); static int validate_offset_imm PARAMS ((unsigned int, int)); static void opcode_select PARAMS ((int)); static void end_of_line PARAMS ((char *)); @@ -659,8 +897,16 @@ static int co_proc_number PARAMS ((char **)); static int cp_opc_expr PARAMS ((char **, int, int)); static int cp_reg_required_here PARAMS ((char **, int)); static int fp_reg_required_here PARAMS ((char **, int)); +static int vfp_sp_reg_required_here PARAMS ((char **, enum vfp_sp_reg_pos)); +static int vfp_dp_reg_required_here PARAMS ((char **, enum vfp_dp_reg_pos)); +static void vfp_sp_ldstm PARAMS ((char *, enum vfp_ldstm_type)); +static void vfp_dp_ldstm PARAMS ((char *, enum vfp_ldstm_type)); +static long vfp_sp_reg_list PARAMS ((char **, enum vfp_sp_reg_pos)); +static long vfp_dp_reg_list PARAMS ((char **)); +static int vfp_psr_required_here PARAMS ((char **str)); +static const struct vfp_reg *vfp_psr_parse PARAMS ((char **str)); static int cp_address_offset PARAMS ((char **)); -static int cp_address_required_here PARAMS ((char **)); +static int cp_address_required_here PARAMS ((char **, int)); static int my_get_float_expression PARAMS ((char **)); static int skip_past_comma PARAMS ((char **)); static int walk_no_bignums PARAMS ((symbolS *)); @@ -670,15 +916,24 @@ static int fp_op2 PARAMS ((char **)); static long reg_list PARAMS ((char **)); static void thumb_load_store PARAMS ((char *, int, int)); static int decode_shift PARAMS ((char **, int)); -static int ldst_extend PARAMS ((char **, int)); +static int ldst_extend PARAMS ((char **)); +static int ldst_extend_v4 PARAMS ((char **)); static void thumb_add_sub PARAMS ((char *, int)); -static void insert_reg PARAMS ((int)); +static void insert_reg PARAMS ((const struct reg_entry *, + struct hash_control *)); static void thumb_shift PARAMS ((char *, int)); static void thumb_mov_compare PARAMS ((char *, int)); +static void build_arm_ops_hsh PARAMS ((void)); static void set_constant_flonums PARAMS ((void)); static valueT md_chars_to_number PARAMS ((char *, int)); -static void insert_reg_alias PARAMS ((char *, int)); -static void output_inst PARAMS ((void)); +static void build_reg_hsh PARAMS ((struct reg_map *)); +static void insert_reg_alias PARAMS ((char *, int, struct hash_control *)); +static int create_register_alias PARAMS ((char *, char *)); +static void output_inst PARAMS ((const char *)); +static int accum0_required_here PARAMS ((char **)); +static int ld_mode_required_here PARAMS ((char **)); +static void do_branch25 PARAMS ((char *)); +static symbolS * find_real_start PARAMS ((symbolS *)); #ifdef OBJ_ELF static bfd_reloc_code_real_type arm_parse_reloc PARAMS ((void)); #endif @@ -687,202 +942,869 @@ static bfd_reloc_code_real_type arm_parse_reloc PARAMS ((void)); take 2: */ #define INSN_SIZE 4 -/* LONGEST_INST is the longest basic instruction name without - conditions or flags. ARM7M has 4 of length 5. El Segundo - has one basic instruction name of length 7 (SMLALxy). */ -#define LONGEST_INST 7 +/* "INSN<cond> X,Y" where X:bit12, Y:bit16. */ +#define MAV_MODE1 0x100c + +/* "INSN<cond> X,Y" where X:bit16, Y:bit12. */ +#define MAV_MODE2 0x0c10 + +/* "INSN<cond> X,Y" where X:0, Y:bit16. */ +#define MAV_MODE3 0x1000 + +/* "INSN<cond> X,Y,Z" where X:16, Y:0, Z:12. */ +#define MAV_MODE4 0x0c0010 + +/* "INSN<cond> X,Y,Z" where X:12, Y:16, Z:0. */ +#define MAV_MODE5 0x00100c + +/* "INSN<cond> W,X,Y,Z" where W:5, X:12, Y:16, Z:0. */ +#define MAV_MODE6 0x00100c05 struct asm_opcode { /* Basic string to match. */ - CONST char * template; + const char * template; /* Basic instruction code. */ unsigned long value; - /* Compulsory suffix that must follow conds. If "", then the - instruction is not conditional and must have no suffix. */ - CONST char * comp_suffix; + /* Offset into the template where the condition code (if any) will be. + If zero, then the instruction is never conditional. */ + unsigned cond_offset; - /* Bits to toggle if flag 'n' set. */ - CONST struct asm_flg * flags; - - /* Which CPU variants this exists for. */ - unsigned long variants; + /* Which architecture variant provides this instruction. */ + unsigned long variant; /* Function to call to parse args. */ - void (* parms) PARAMS ((char *, unsigned long)); + void (* parms) PARAMS ((char *)); }; -static CONST struct asm_opcode insns[] = -{ -/* Intel XScale extensions to ARM V5 ISA. */ - {"mia", 0x0e200010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miaph", 0x0e280010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miabb", 0x0e2c0010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miabt", 0x0e2d0010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miatb", 0x0e2e0010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miatt", 0x0e2f0010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"mar", 0x0c400000, NULL, NULL, ARM_EXT_XSCALE, do_mar}, - {"mra", 0x0c500000, NULL, NULL, ARM_EXT_XSCALE, do_mra}, - {"pld", 0xf450f000, "", NULL, ARM_EXT_XSCALE, do_pld}, - {"ldr", 0x000000d0, NULL, ldr_flags, ARM_ANY, do_ldrd}, - {"str", 0x000000f0, NULL, str_flags, ARM_ANY, do_ldrd}, - -/* ARM Instructions. */ - {"and", 0x00000000, NULL, s_flag, ARM_ANY, do_arit}, - {"eor", 0x00200000, NULL, s_flag, ARM_ANY, do_arit}, - {"sub", 0x00400000, NULL, s_flag, ARM_ANY, do_arit}, - {"rsb", 0x00600000, NULL, s_flag, ARM_ANY, do_arit}, - {"add", 0x00800000, NULL, s_flag, ARM_ANY, do_arit}, - {"adc", 0x00a00000, NULL, s_flag, ARM_ANY, do_arit}, - {"sbc", 0x00c00000, NULL, s_flag, ARM_ANY, do_arit}, - {"rsc", 0x00e00000, NULL, s_flag, ARM_ANY, do_arit}, - {"orr", 0x01800000, NULL, s_flag, ARM_ANY, do_arit}, - {"bic", 0x01c00000, NULL, s_flag, ARM_ANY, do_arit}, - {"tst", 0x01000000, NULL, cmp_flags, ARM_ANY, do_cmp}, - {"teq", 0x01200000, NULL, cmp_flags, ARM_ANY, do_cmp}, - {"cmp", 0x01400000, NULL, cmp_flags, ARM_ANY, do_cmp}, - {"cmn", 0x01600000, NULL, cmp_flags, ARM_ANY, do_cmp}, - {"mov", 0x01a00000, NULL, s_flag, ARM_ANY, do_mov}, - {"mvn", 0x01e00000, NULL, s_flag, ARM_ANY, do_mov}, - {"str", 0x04000000, NULL, str_flags, ARM_ANY, do_ldst}, - {"ldr", 0x04100000, NULL, ldr_flags, ARM_ANY, do_ldst}, - {"stm", 0x08000000, NULL, stm_flags, ARM_ANY, do_ldmstm}, - {"ldm", 0x08100000, NULL, ldm_flags, ARM_ANY, do_ldmstm}, - {"swi", 0x0f000000, NULL, NULL, ARM_ANY, do_swi}, +static const struct asm_opcode insns[] = +{ + /* Core ARM Instructions. */ + {"and", 0xe0000000, 3, ARM_EXT_V1, do_arit}, + {"ands", 0xe0100000, 3, ARM_EXT_V1, do_arit}, + {"eor", 0xe0200000, 3, ARM_EXT_V1, do_arit}, + {"eors", 0xe0300000, 3, ARM_EXT_V1, do_arit}, + {"sub", 0xe0400000, 3, ARM_EXT_V1, do_arit}, + {"subs", 0xe0500000, 3, ARM_EXT_V1, do_arit}, + {"rsb", 0xe0600000, 3, ARM_EXT_V1, do_arit}, + {"rsbs", 0xe0700000, 3, ARM_EXT_V1, do_arit}, + {"add", 0xe0800000, 3, ARM_EXT_V1, do_arit}, + {"adds", 0xe0900000, 3, ARM_EXT_V1, do_arit}, + {"adc", 0xe0a00000, 3, ARM_EXT_V1, do_arit}, + {"adcs", 0xe0b00000, 3, ARM_EXT_V1, do_arit}, + {"sbc", 0xe0c00000, 3, ARM_EXT_V1, do_arit}, + {"sbcs", 0xe0d00000, 3, ARM_EXT_V1, do_arit}, + {"rsc", 0xe0e00000, 3, ARM_EXT_V1, do_arit}, + {"rscs", 0xe0f00000, 3, ARM_EXT_V1, do_arit}, + {"orr", 0xe1800000, 3, ARM_EXT_V1, do_arit}, + {"orrs", 0xe1900000, 3, ARM_EXT_V1, do_arit}, + {"bic", 0xe1c00000, 3, ARM_EXT_V1, do_arit}, + {"bics", 0xe1d00000, 3, ARM_EXT_V1, do_arit}, + + {"tst", 0xe1100000, 3, ARM_EXT_V1, do_cmp}, + {"tsts", 0xe1100000, 3, ARM_EXT_V1, do_cmp}, + {"tstp", 0xe110f000, 3, ARM_EXT_V1, do_cmp}, + {"teq", 0xe1300000, 3, ARM_EXT_V1, do_cmp}, + {"teqs", 0xe1300000, 3, ARM_EXT_V1, do_cmp}, + {"teqp", 0xe130f000, 3, ARM_EXT_V1, do_cmp}, + {"cmp", 0xe1500000, 3, ARM_EXT_V1, do_cmp}, + {"cmps", 0xe1500000, 3, ARM_EXT_V1, do_cmp}, + {"cmpp", 0xe150f000, 3, ARM_EXT_V1, do_cmp}, + {"cmn", 0xe1700000, 3, ARM_EXT_V1, do_cmp}, + {"cmns", 0xe1700000, 3, ARM_EXT_V1, do_cmp}, + {"cmnp", 0xe170f000, 3, ARM_EXT_V1, do_cmp}, + + {"mov", 0xe1a00000, 3, ARM_EXT_V1, do_mov}, + {"movs", 0xe1b00000, 3, ARM_EXT_V1, do_mov}, + {"mvn", 0xe1e00000, 3, ARM_EXT_V1, do_mov}, + {"mvns", 0xe1f00000, 3, ARM_EXT_V1, do_mov}, + + {"ldr", 0xe4100000, 3, ARM_EXT_V1, do_ldst}, + {"ldrb", 0xe4500000, 3, ARM_EXT_V1, do_ldst}, + {"ldrt", 0xe4300000, 3, ARM_EXT_V1, do_ldstt}, + {"ldrbt", 0xe4700000, 3, ARM_EXT_V1, do_ldstt}, + {"str", 0xe4000000, 3, ARM_EXT_V1, do_ldst}, + {"strb", 0xe4400000, 3, ARM_EXT_V1, do_ldst}, + {"strt", 0xe4200000, 3, ARM_EXT_V1, do_ldstt}, + {"strbt", 0xe4600000, 3, ARM_EXT_V1, do_ldstt}, + + {"stmia", 0xe8800000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmib", 0xe9800000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmda", 0xe8000000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmdb", 0xe9000000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmfd", 0xe9000000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmfa", 0xe9800000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmea", 0xe8800000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmed", 0xe8000000, 3, ARM_EXT_V1, do_ldmstm}, + + {"ldmia", 0xe8900000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmib", 0xe9900000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmda", 0xe8100000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmdb", 0xe9100000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmfd", 0xe8900000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmfa", 0xe8100000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmea", 0xe9100000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmed", 0xe9900000, 3, ARM_EXT_V1, do_ldmstm}, + + {"swi", 0xef000000, 3, ARM_EXT_V1, do_swi}, #ifdef TE_WINCE - {"bl", 0x0b000000, NULL, NULL, ARM_ANY, do_branch}, - {"b", 0x0a000000, NULL, NULL, ARM_ANY, do_branch}, + /* XXX This is the wrong place to do this. Think multi-arch. */ + {"bl", 0xeb000000, 2, ARM_EXT_V1, do_branch}, + {"b", 0xea000000, 1, ARM_EXT_V1, do_branch}, #else - {"bl", 0x0bfffffe, NULL, NULL, ARM_ANY, do_branch}, - {"b", 0x0afffffe, NULL, NULL, ARM_ANY, do_branch}, + {"bl", 0xebfffffe, 2, ARM_EXT_V1, do_branch}, + {"b", 0xeafffffe, 1, ARM_EXT_V1, do_branch}, #endif -/* Pseudo ops. */ - {"adr", 0x028f0000, NULL, NULL, ARM_ANY, do_adr}, - {"adrl", 0x028f0000, NULL, NULL, ARM_ANY, do_adrl}, - {"nop", 0x01a00000, NULL, NULL, ARM_ANY, do_nop}, - -/* ARM 2 multiplies. */ - {"mul", 0x00000090, NULL, s_flag, ARM_2UP, do_mul}, - {"mla", 0x00200090, NULL, s_flag, ARM_2UP, do_mla}, - -/* ARM 3 - swp instructions. */ - {"swp", 0x01000090, NULL, byte_flag, ARM_3UP, do_swap}, - -/* ARM 6 Coprocessor instructions. */ - {"mrs", 0x010f0000, NULL, NULL, ARM_6UP, do_mrs}, - {"msr", 0x0120f000, NULL, NULL, ARM_6UP, do_msr}, -/* ScottB: our code uses 0x0128f000 for msr. - NickC: but this is wrong because the bits 16 through 19 are - handled by the PSR_xxx defines above. */ - -/* ARM 7M long multiplies - need signed/unsigned flags! */ - {"smull", 0x00c00090, NULL, s_flag, ARM_EXT_LONGMUL, do_mull}, - {"umull", 0x00800090, NULL, s_flag, ARM_EXT_LONGMUL, do_mull}, - {"smlal", 0x00e00090, NULL, s_flag, ARM_EXT_LONGMUL, do_mull}, - {"umlal", 0x00a00090, NULL, s_flag, ARM_EXT_LONGMUL, do_mull}, - -/* ARM THUMB interworking. */ - {"bx", 0x012fff10, NULL, NULL, ARM_EXT_THUMB, do_bx}, - -/* Floating point instructions. */ - {"wfs", 0x0e200110, NULL, NULL, FPU_ALL, do_fp_ctrl}, - {"rfs", 0x0e300110, NULL, NULL, FPU_ALL, do_fp_ctrl}, - {"wfc", 0x0e400110, NULL, NULL, FPU_ALL, do_fp_ctrl}, - {"rfc", 0x0e500110, NULL, NULL, FPU_ALL, do_fp_ctrl}, - {"ldf", 0x0c100100, "sdep", NULL, FPU_ALL, do_fp_ldst}, - {"stf", 0x0c000100, "sdep", NULL, FPU_ALL, do_fp_ldst}, - {"lfm", 0x0c100200, NULL, lfm_flags, FPU_MEMMULTI, do_fp_ldmstm}, - {"sfm", 0x0c000200, NULL, sfm_flags, FPU_MEMMULTI, do_fp_ldmstm}, - {"mvf", 0x0e008100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"mnf", 0x0e108100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"abs", 0x0e208100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"rnd", 0x0e308100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"sqt", 0x0e408100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"log", 0x0e508100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"lgn", 0x0e608100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"exp", 0x0e708100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"sin", 0x0e808100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"cos", 0x0e908100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"tan", 0x0ea08100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"asn", 0x0eb08100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"acs", 0x0ec08100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"atn", 0x0ed08100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"urd", 0x0ee08100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"nrm", 0x0ef08100, "sde", round_flags, FPU_ALL, do_fp_monadic}, - {"adf", 0x0e000100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"suf", 0x0e200100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"rsf", 0x0e300100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"muf", 0x0e100100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"dvf", 0x0e400100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"rdf", 0x0e500100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"pow", 0x0e600100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"rpw", 0x0e700100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"rmf", 0x0e800100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"fml", 0x0e900100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"fdv", 0x0ea00100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"frd", 0x0eb00100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"pol", 0x0ec00100, "sde", round_flags, FPU_ALL, do_fp_dyadic}, - {"cmf", 0x0e90f110, NULL, except_flag, FPU_ALL, do_fp_cmp}, - {"cnf", 0x0eb0f110, NULL, except_flag, FPU_ALL, do_fp_cmp}, -/* The FPA10 data sheet suggests that the 'E' of cmfe/cnfe should not - be an optional suffix, but part of the instruction. To be compatible, - we accept either. */ - {"cmfe", 0x0ed0f110, NULL, NULL, FPU_ALL, do_fp_cmp}, - {"cnfe", 0x0ef0f110, NULL, NULL, FPU_ALL, do_fp_cmp}, - {"flt", 0x0e000110, "sde", round_flags, FPU_ALL, do_fp_from_reg}, - {"fix", 0x0e100110, NULL, fix_flags, FPU_ALL, do_fp_to_reg}, - -/* Generic copressor instructions. */ - {"cdp", 0x0e000000, NULL, NULL, ARM_2UP, do_cdp}, - {"ldc", 0x0c100000, NULL, cplong_flag, ARM_2UP, do_lstc}, - {"stc", 0x0c000000, NULL, cplong_flag, ARM_2UP, do_lstc}, - {"mcr", 0x0e000010, NULL, NULL, ARM_2UP, do_co_reg}, - {"mrc", 0x0e100010, NULL, NULL, ARM_2UP, do_co_reg}, - -/* ARM ISA extension 5. */ -/* Note: blx is actually 2 opcodes, so the .value is set dynamically. - And it's sometimes conditional and sometimes not. */ - {"blx", 0, NULL, NULL, ARM_EXT_V5, do_blx}, - {"clz", 0x016f0f10, NULL, NULL, ARM_EXT_V5, do_clz}, - {"bkpt", 0xe1200070, "", NULL, ARM_EXT_V5, do_bkpt}, - {"ldc2", 0xfc100000, "", cplong_flag, ARM_EXT_V5, do_lstc2}, - {"stc2", 0xfc000000, "", cplong_flag, ARM_EXT_V5, do_lstc2}, - {"cdp2", 0xfe000000, "", NULL, ARM_EXT_V5, do_cdp2}, - {"mcr2", 0xfe000010, "", NULL, ARM_EXT_V5, do_co_reg2}, - {"mrc2", 0xfe100010, "", NULL, ARM_EXT_V5, do_co_reg2}, - -/* ARM ISA extension 5E, El Segundo. */ - {"smlabb", 0x01000080, NULL, NULL, ARM_EXT_V5E, do_smla}, - {"smlatb", 0x010000a0, NULL, NULL, ARM_EXT_V5E, do_smla}, - {"smlabt", 0x010000c0, NULL, NULL, ARM_EXT_V5E, do_smla}, - {"smlatt", 0x010000e0, NULL, NULL, ARM_EXT_V5E, do_smla}, - - {"smlawb", 0x01200080, NULL, NULL, ARM_EXT_V5E, do_smla}, - {"smlawt", 0x012000c0, NULL, NULL, ARM_EXT_V5E, do_smla}, - - {"smlalbb",0x01400080, NULL, NULL, ARM_EXT_V5E, do_smlal}, - {"smlaltb",0x014000a0, NULL, NULL, ARM_EXT_V5E, do_smlal}, - {"smlalbt",0x014000c0, NULL, NULL, ARM_EXT_V5E, do_smlal}, - {"smlaltt",0x014000e0, NULL, NULL, ARM_EXT_V5E, do_smlal}, - - {"smulbb", 0x01600080, NULL, NULL, ARM_EXT_V5E, do_smul}, - {"smultb", 0x016000a0, NULL, NULL, ARM_EXT_V5E, do_smul}, - {"smulbt", 0x016000c0, NULL, NULL, ARM_EXT_V5E, do_smul}, - {"smultt", 0x016000e0, NULL, NULL, ARM_EXT_V5E, do_smul}, - - {"smulwb", 0x012000a0, NULL, NULL, ARM_EXT_V5E, do_smul}, - {"smulwt", 0x012000e0, NULL, NULL, ARM_EXT_V5E, do_smul}, - - {"qadd", 0x01000050, NULL, NULL, ARM_EXT_V5E, do_qadd}, - {"qdadd", 0x01400050, NULL, NULL, ARM_EXT_V5E, do_qadd}, - {"qsub", 0x01200050, NULL, NULL, ARM_EXT_V5E, do_qadd}, - {"qdsub", 0x01600050, NULL, NULL, ARM_EXT_V5E, do_qadd}, - - {"mcrr", 0x0c400000, NULL, NULL, ARM_EXT_V5E, do_co_reg2c}, - {"mrrc", 0x0c500000, NULL, NULL, ARM_EXT_V5E, do_co_reg2c}, + /* Pseudo ops. */ + {"adr", 0xe28f0000, 3, ARM_EXT_V1, do_adr}, + {"adrl", 0xe28f0000, 3, ARM_EXT_V1, do_adrl}, + {"nop", 0xe1a00000, 3, ARM_EXT_V1, do_empty}, + + /* ARM 2 multiplies. */ + {"mul", 0xe0000090, 3, ARM_EXT_V2, do_mul}, + {"muls", 0xe0100090, 3, ARM_EXT_V2, do_mul}, + {"mla", 0xe0200090, 3, ARM_EXT_V2, do_mla}, + {"mlas", 0xe0300090, 3, ARM_EXT_V2, do_mla}, + + /* Generic copressor instructions. */ + {"cdp", 0xee000000, 3, ARM_EXT_V2, do_cdp}, + {"ldc", 0xec100000, 3, ARM_EXT_V2, do_lstc}, + {"ldcl", 0xec500000, 3, ARM_EXT_V2, do_lstc}, + {"stc", 0xec000000, 3, ARM_EXT_V2, do_lstc}, + {"stcl", 0xec400000, 3, ARM_EXT_V2, do_lstc}, + {"mcr", 0xee000010, 3, ARM_EXT_V2, do_co_reg}, + {"mrc", 0xee100010, 3, ARM_EXT_V2, do_co_reg}, + + /* ARM 3 - swp instructions. */ + {"swp", 0xe1000090, 3, ARM_EXT_V2S, do_swap}, + {"swpb", 0xe1400090, 3, ARM_EXT_V2S, do_swap}, + + /* ARM 6 Status register instructions. */ + {"mrs", 0xe10f0000, 3, ARM_EXT_V3, do_mrs}, + {"msr", 0xe120f000, 3, ARM_EXT_V3, do_msr}, + /* ScottB: our code uses 0xe128f000 for msr. + NickC: but this is wrong because the bits 16 through 19 are + handled by the PSR_xxx defines above. */ + + /* ARM 7M long multiplies. */ + {"smull", 0xe0c00090, 5, ARM_EXT_V3M, do_mull}, + {"smulls", 0xe0d00090, 5, ARM_EXT_V3M, do_mull}, + {"umull", 0xe0800090, 5, ARM_EXT_V3M, do_mull}, + {"umulls", 0xe0900090, 5, ARM_EXT_V3M, do_mull}, + {"smlal", 0xe0e00090, 5, ARM_EXT_V3M, do_mull}, + {"smlals", 0xe0f00090, 5, ARM_EXT_V3M, do_mull}, + {"umlal", 0xe0a00090, 5, ARM_EXT_V3M, do_mull}, + {"umlals", 0xe0b00090, 5, ARM_EXT_V3M, do_mull}, + + /* ARM Architecture 4. */ + {"ldrh", 0xe01000b0, 3, ARM_EXT_V4, do_ldstv4}, + {"ldrsh", 0xe01000f0, 3, ARM_EXT_V4, do_ldstv4}, + {"ldrsb", 0xe01000d0, 3, ARM_EXT_V4, do_ldstv4}, + {"strh", 0xe00000b0, 3, ARM_EXT_V4, do_ldstv4}, + + /* ARM Architecture 4T. */ + /* Note: bx (and blx) are required on V5, even if the processor does + not support Thumb. */ + {"bx", 0xe12fff10, 2, ARM_EXT_V4T | ARM_EXT_V5, do_bx}, + + /* ARM Architecture 5T. */ + /* Note: blx has 2 variants, so the .value is set dynamically. + Only one of the variants has conditional execution. */ + {"blx", 0xe0000000, 3, ARM_EXT_V5, do_blx}, + {"clz", 0xe16f0f10, 3, ARM_EXT_V5, do_clz}, + {"bkpt", 0xe1200070, 0, ARM_EXT_V5, do_bkpt}, + {"ldc2", 0xfc100000, 0, ARM_EXT_V5, do_lstc2}, + {"ldc2l", 0xfc500000, 0, ARM_EXT_V5, do_lstc2}, + {"stc2", 0xfc000000, 0, ARM_EXT_V5, do_lstc2}, + {"stc2l", 0xfc400000, 0, ARM_EXT_V5, do_lstc2}, + {"cdp2", 0xfe000000, 0, ARM_EXT_V5, do_cdp2}, + {"mcr2", 0xfe000010, 0, ARM_EXT_V5, do_co_reg2}, + {"mrc2", 0xfe100010, 0, ARM_EXT_V5, do_co_reg2}, + + /* ARM Architecture 5TExP. */ + {"smlabb", 0xe1000080, 6, ARM_EXT_V5ExP, do_smla}, + {"smlatb", 0xe10000a0, 6, ARM_EXT_V5ExP, do_smla}, + {"smlabt", 0xe10000c0, 6, ARM_EXT_V5ExP, do_smla}, + {"smlatt", 0xe10000e0, 6, ARM_EXT_V5ExP, do_smla}, + + {"smlawb", 0xe1200080, 6, ARM_EXT_V5ExP, do_smla}, + {"smlawt", 0xe12000c0, 6, ARM_EXT_V5ExP, do_smla}, + + {"smlalbb", 0xe1400080, 7, ARM_EXT_V5ExP, do_smlal}, + {"smlaltb", 0xe14000a0, 7, ARM_EXT_V5ExP, do_smlal}, + {"smlalbt", 0xe14000c0, 7, ARM_EXT_V5ExP, do_smlal}, + {"smlaltt", 0xe14000e0, 7, ARM_EXT_V5ExP, do_smlal}, + + {"smulbb", 0xe1600080, 6, ARM_EXT_V5ExP, do_smul}, + {"smultb", 0xe16000a0, 6, ARM_EXT_V5ExP, do_smul}, + {"smulbt", 0xe16000c0, 6, ARM_EXT_V5ExP, do_smul}, + {"smultt", 0xe16000e0, 6, ARM_EXT_V5ExP, do_smul}, + + {"smulwb", 0xe12000a0, 6, ARM_EXT_V5ExP, do_smul}, + {"smulwt", 0xe12000e0, 6, ARM_EXT_V5ExP, do_smul}, + + {"qadd", 0xe1000050, 4, ARM_EXT_V5ExP, do_qadd}, + {"qdadd", 0xe1400050, 5, ARM_EXT_V5ExP, do_qadd}, + {"qsub", 0xe1200050, 4, ARM_EXT_V5ExP, do_qadd}, + {"qdsub", 0xe1600050, 5, ARM_EXT_V5ExP, do_qadd}, + + /* ARM Architecture 5TE. */ + {"pld", 0xf450f000, 0, ARM_EXT_V5E, do_pld}, + {"ldrd", 0xe00000d0, 3, ARM_EXT_V5E, do_ldrd}, + {"strd", 0xe00000f0, 3, ARM_EXT_V5E, do_ldrd}, + + {"mcrr", 0xec400000, 4, ARM_EXT_V5E, do_co_reg2c}, + {"mrrc", 0xec500000, 4, ARM_EXT_V5E, do_co_reg2c}, + + /* ARM Architecture 5TEJ. */ + {"bxj", 0xe12fff20, 3, ARM_EXT_V5J, do_bxj}, + + /* Core FPA instruction set (V1). */ + {"wfs", 0xee200110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, + {"rfs", 0xee300110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, + {"wfc", 0xee400110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, + {"rfc", 0xee500110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, + + {"ldfs", 0xec100100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"ldfd", 0xec108100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"ldfe", 0xec500100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"ldfp", 0xec508100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + + {"stfs", 0xec000100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"stfd", 0xec008100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"stfe", 0xec400100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"stfp", 0xec408100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + + {"mvfs", 0xee008100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfsp", 0xee008120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfsm", 0xee008140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfsz", 0xee008160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfd", 0xee008180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfdp", 0xee0081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfdm", 0xee0081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfdz", 0xee0081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfe", 0xee088100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfep", 0xee088120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfem", 0xee088140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfez", 0xee088160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"mnfs", 0xee108100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfsp", 0xee108120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfsm", 0xee108140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfsz", 0xee108160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfd", 0xee108180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfdp", 0xee1081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfdm", 0xee1081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfdz", 0xee1081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfe", 0xee188100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfep", 0xee188120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfem", 0xee188140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfez", 0xee188160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"abss", 0xee208100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"abssp", 0xee208120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"abssm", 0xee208140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"abssz", 0xee208160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absd", 0xee208180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absdp", 0xee2081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absdm", 0xee2081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absdz", 0xee2081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"abse", 0xee288100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absep", 0xee288120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absem", 0xee288140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absez", 0xee288160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"rnds", 0xee308100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndsp", 0xee308120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndsm", 0xee308140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndsz", 0xee308160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndd", 0xee308180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rnddp", 0xee3081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rnddm", 0xee3081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rnddz", 0xee3081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rnde", 0xee388100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndep", 0xee388120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndem", 0xee388140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndez", 0xee388160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"sqts", 0xee408100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtsp", 0xee408120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtsm", 0xee408140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtsz", 0xee408160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtd", 0xee408180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtdp", 0xee4081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtdm", 0xee4081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtdz", 0xee4081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqte", 0xee488100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtep", 0xee488120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtem", 0xee488140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtez", 0xee488160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"logs", 0xee508100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logsp", 0xee508120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logsm", 0xee508140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logsz", 0xee508160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logd", 0xee508180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logdp", 0xee5081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logdm", 0xee5081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logdz", 0xee5081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"loge", 0xee588100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logep", 0xee588120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logem", 0xee588140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logez", 0xee588160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"lgns", 0xee608100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnsp", 0xee608120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnsm", 0xee608140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnsz", 0xee608160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnd", 0xee608180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgndp", 0xee6081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgndm", 0xee6081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgndz", 0xee6081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgne", 0xee688100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnep", 0xee688120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnem", 0xee688140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnez", 0xee688160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"exps", 0xee708100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expsp", 0xee708120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expsm", 0xee708140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expsz", 0xee708160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expd", 0xee708180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expdp", 0xee7081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expdm", 0xee7081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expdz", 0xee7081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expe", 0xee788100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expep", 0xee788120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expem", 0xee788140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expdz", 0xee788160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"sins", 0xee808100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinsp", 0xee808120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinsm", 0xee808140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinsz", 0xee808160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sind", 0xee808180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sindp", 0xee8081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sindm", 0xee8081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sindz", 0xee8081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sine", 0xee888100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinep", 0xee888120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinem", 0xee888140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinez", 0xee888160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"coss", 0xee908100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cossp", 0xee908120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cossm", 0xee908140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cossz", 0xee908160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosd", 0xee908180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosdp", 0xee9081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosdm", 0xee9081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosdz", 0xee9081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cose", 0xee988100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosep", 0xee988120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosem", 0xee988140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosez", 0xee988160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"tans", 0xeea08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tansp", 0xeea08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tansm", 0xeea08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tansz", 0xeea08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tand", 0xeea08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tandp", 0xeea081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tandm", 0xeea081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tandz", 0xeea081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tane", 0xeea88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tanep", 0xeea88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tanem", 0xeea88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tanez", 0xeea88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"asns", 0xeeb08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnsp", 0xeeb08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnsm", 0xeeb08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnsz", 0xeeb08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnd", 0xeeb08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asndp", 0xeeb081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asndm", 0xeeb081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asndz", 0xeeb081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asne", 0xeeb88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnep", 0xeeb88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnem", 0xeeb88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnez", 0xeeb88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"acss", 0xeec08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acssp", 0xeec08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acssm", 0xeec08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acssz", 0xeec08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsd", 0xeec08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsdp", 0xeec081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsdm", 0xeec081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsdz", 0xeec081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acse", 0xeec88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsep", 0xeec88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsem", 0xeec88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsez", 0xeec88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"atns", 0xeed08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnsp", 0xeed08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnsm", 0xeed08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnsz", 0xeed08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnd", 0xeed08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atndp", 0xeed081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atndm", 0xeed081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atndz", 0xeed081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atne", 0xeed88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnep", 0xeed88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnem", 0xeed88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnez", 0xeed88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"urds", 0xeee08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdsp", 0xeee08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdsm", 0xeee08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdsz", 0xeee08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdd", 0xeee08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urddp", 0xeee081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urddm", 0xeee081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urddz", 0xeee081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urde", 0xeee88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdep", 0xeee88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdem", 0xeee88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdez", 0xeee88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"nrms", 0xeef08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmsp", 0xeef08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmsm", 0xeef08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmsz", 0xeef08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmd", 0xeef08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmdp", 0xeef081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmdm", 0xeef081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmdz", 0xeef081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrme", 0xeef88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmep", 0xeef88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmem", 0xeef88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmez", 0xeef88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"adfs", 0xee000100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfsp", 0xee000120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfsm", 0xee000140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfsz", 0xee000160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfd", 0xee000180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfdp", 0xee0001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfdm", 0xee0001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfdz", 0xee0001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfe", 0xee080100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfep", 0xee080120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfem", 0xee080140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfez", 0xee080160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"sufs", 0xee200100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufsp", 0xee200120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufsm", 0xee200140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufsz", 0xee200160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufd", 0xee200180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufdp", 0xee2001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufdm", 0xee2001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufdz", 0xee2001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufe", 0xee280100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufep", 0xee280120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufem", 0xee280140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufez", 0xee280160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"rsfs", 0xee300100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfsp", 0xee300120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfsm", 0xee300140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfsz", 0xee300160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfd", 0xee300180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfdp", 0xee3001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfdm", 0xee3001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfdz", 0xee3001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfe", 0xee380100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfep", 0xee380120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfem", 0xee380140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfez", 0xee380160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"mufs", 0xee100100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufsp", 0xee100120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufsm", 0xee100140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufsz", 0xee100160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufd", 0xee100180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufdp", 0xee1001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufdm", 0xee1001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufdz", 0xee1001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufe", 0xee180100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufep", 0xee180120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufem", 0xee180140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufez", 0xee180160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"dvfs", 0xee400100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfsp", 0xee400120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfsm", 0xee400140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfsz", 0xee400160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfd", 0xee400180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfdp", 0xee4001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfdm", 0xee4001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfdz", 0xee4001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfe", 0xee480100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfep", 0xee480120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfem", 0xee480140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfez", 0xee480160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"rdfs", 0xee500100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfsp", 0xee500120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfsm", 0xee500140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfsz", 0xee500160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfd", 0xee500180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfdp", 0xee5001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfdm", 0xee5001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfdz", 0xee5001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfe", 0xee580100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfep", 0xee580120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfem", 0xee580140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfez", 0xee580160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"pows", 0xee600100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powsp", 0xee600120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powsm", 0xee600140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powsz", 0xee600160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powd", 0xee600180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powdp", 0xee6001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powdm", 0xee6001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powdz", 0xee6001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powe", 0xee680100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powep", 0xee680120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powem", 0xee680140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powez", 0xee680160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"rpws", 0xee700100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwsp", 0xee700120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwsm", 0xee700140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwsz", 0xee700160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwd", 0xee700180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwdp", 0xee7001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwdm", 0xee7001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwdz", 0xee7001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwe", 0xee780100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwep", 0xee780120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwem", 0xee780140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwez", 0xee780160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"rmfs", 0xee800100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfsp", 0xee800120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfsm", 0xee800140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfsz", 0xee800160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfd", 0xee800180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfdp", 0xee8001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfdm", 0xee8001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfdz", 0xee8001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfe", 0xee880100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfep", 0xee880120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfem", 0xee880140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfez", 0xee880160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"fmls", 0xee900100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlsp", 0xee900120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlsm", 0xee900140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlsz", 0xee900160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmld", 0xee900180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmldp", 0xee9001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmldm", 0xee9001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmldz", 0xee9001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmle", 0xee980100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlep", 0xee980120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlem", 0xee980140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlez", 0xee980160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"fdvs", 0xeea00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvsp", 0xeea00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvsm", 0xeea00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvsz", 0xeea00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvd", 0xeea00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvdp", 0xeea001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvdm", 0xeea001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvdz", 0xeea001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdve", 0xeea80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvep", 0xeea80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvem", 0xeea80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvez", 0xeea80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"frds", 0xeeb00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdsp", 0xeeb00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdsm", 0xeeb00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdsz", 0xeeb00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdd", 0xeeb00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frddp", 0xeeb001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frddm", 0xeeb001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frddz", 0xeeb001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frde", 0xeeb80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdep", 0xeeb80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdem", 0xeeb80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdez", 0xeeb80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"pols", 0xeec00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polsp", 0xeec00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polsm", 0xeec00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polsz", 0xeec00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"pold", 0xeec00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"poldp", 0xeec001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"poldm", 0xeec001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"poldz", 0xeec001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"pole", 0xeec80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polep", 0xeec80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polem", 0xeec80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polez", 0xeec80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"cmf", 0xee90f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, + {"cmfe", 0xeed0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, + {"cnf", 0xeeb0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, + {"cnfe", 0xeef0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, + /* The FPA10 data sheet suggests that the 'E' of cmfe/cnfe should + not be an optional suffix, but part of the instruction. To be + compatible, we accept either. */ + {"cmfe", 0xeed0f110, 4, FPU_FPA_EXT_V1, do_fpa_cmp}, + {"cnfe", 0xeef0f110, 4, FPU_FPA_EXT_V1, do_fpa_cmp}, + + {"flts", 0xee000110, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltsp", 0xee000130, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltsm", 0xee000150, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltsz", 0xee000170, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltd", 0xee000190, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltdp", 0xee0001b0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltdm", 0xee0001d0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltdz", 0xee0001f0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"flte", 0xee080110, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltep", 0xee080130, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltem", 0xee080150, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltez", 0xee080170, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + + /* The implementation of the FIX instruction is broken on some + assemblers, in that it accepts a precision specifier as well as a + rounding specifier, despite the fact that this is meaningless. + To be more compatible, we accept it as well, though of course it + does not set any bits. */ + {"fix", 0xee100110, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixsp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixsm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixsz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixdp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixdm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixdz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixep", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixem", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixez", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + + /* Instructions that were new with the real FPA, call them V2. */ + {"lfm", 0xec100200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"lfmfd", 0xec900200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"lfmea", 0xed100200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"sfm", 0xec000200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"sfmfd", 0xed000200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"sfmea", 0xec800200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + + /* VFP V1xD (single precision). */ + /* Moves and type conversions. */ + {"fcpys", 0xeeb00a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fmrs", 0xee100a10, 4, FPU_VFP_EXT_V1xD, do_vfp_reg_from_sp}, + {"fmsr", 0xee000a10, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_from_reg}, + {"fmstat", 0xeef1fa10, 6, FPU_VFP_EXT_V1xD, do_empty}, + {"fsitos", 0xeeb80ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fuitos", 0xeeb80a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"ftosis", 0xeebd0a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"ftosizs", 0xeebd0ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"ftouis", 0xeebc0a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"ftouizs", 0xeebc0ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fmrx", 0xeef00a10, 4, FPU_VFP_EXT_V1xD, do_vfp_reg_from_ctrl}, + {"fmxr", 0xeee00a10, 4, FPU_VFP_EXT_V1xD, do_vfp_ctrl_from_reg}, + + /* Memory operations. */ + {"flds", 0xed100a00, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_ldst}, + {"fsts", 0xed000a00, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_ldst}, + {"fldmias", 0xec900a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, + {"fldmfds", 0xec900a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, + {"fldmdbs", 0xed300a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, + {"fldmeas", 0xed300a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, + {"fldmiax", 0xec900b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, + {"fldmfdx", 0xec900b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, + {"fldmdbx", 0xed300b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, + {"fldmeax", 0xed300b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, + {"fstmias", 0xec800a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, + {"fstmeas", 0xec800a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, + {"fstmdbs", 0xed200a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, + {"fstmfds", 0xed200a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, + {"fstmiax", 0xec800b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, + {"fstmeax", 0xec800b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, + {"fstmdbx", 0xed200b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, + {"fstmfdx", 0xed200b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, + + /* Monadic operations. */ + {"fabss", 0xeeb00ac0, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fnegs", 0xeeb10a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fsqrts", 0xeeb10ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + + /* Dyadic operations. */ + {"fadds", 0xee300a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fsubs", 0xee300a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fmuls", 0xee200a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fdivs", 0xee800a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fmacs", 0xee000a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fmscs", 0xee100a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fnmuls", 0xee200a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fnmacs", 0xee000a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fnmscs", 0xee100a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + + /* Comparisons. */ + {"fcmps", 0xeeb40a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fcmpzs", 0xeeb50a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_compare_z}, + {"fcmpes", 0xeeb40ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fcmpezs", 0xeeb50ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_compare_z}, + + /* VFP V1 (Double precision). */ + /* Moves and type conversions. */ + {"fcpyd", 0xeeb00b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fcvtds", 0xeeb70ac0, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, + {"fcvtsd", 0xeeb70bc0, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + {"fmdhr", 0xee200b10, 5, FPU_VFP_EXT_V1, do_vfp_dp_from_reg}, + {"fmdlr", 0xee000b10, 5, FPU_VFP_EXT_V1, do_vfp_dp_from_reg}, + {"fmrdh", 0xee300b10, 5, FPU_VFP_EXT_V1, do_vfp_reg_from_dp}, + {"fmrdl", 0xee100b10, 5, FPU_VFP_EXT_V1, do_vfp_reg_from_dp}, + {"fsitod", 0xeeb80bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, + {"fuitod", 0xeeb80b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, + {"ftosid", 0xeebd0b40, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + {"ftosizd", 0xeebd0bc0, 7, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + {"ftouid", 0xeebc0b40, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + {"ftouizd", 0xeebc0bc0, 7, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + + /* Memory operations. */ + {"fldd", 0xed100b00, 4, FPU_VFP_EXT_V1, do_vfp_dp_ldst}, + {"fstd", 0xed000b00, 4, FPU_VFP_EXT_V1, do_vfp_dp_ldst}, + {"fldmiad", 0xec900b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, + {"fldmfdd", 0xec900b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, + {"fldmdbd", 0xed300b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, + {"fldmead", 0xed300b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, + {"fstmiad", 0xec800b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, + {"fstmead", 0xec800b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, + {"fstmdbd", 0xed200b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, + {"fstmfdd", 0xed200b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, + + /* Monadic operations. */ + {"fabsd", 0xeeb00bc0, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fnegd", 0xeeb10b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fsqrtd", 0xeeb10bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + + /* Dyadic operations. */ + {"faddd", 0xee300b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fsubd", 0xee300b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fmuld", 0xee200b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fdivd", 0xee800b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fmacd", 0xee000b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fmscd", 0xee100b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fnmuld", 0xee200b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fnmacd", 0xee000b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fnmscd", 0xee100b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + + /* Comparisons. */ + {"fcmpd", 0xeeb40b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fcmpzd", 0xeeb50b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_compare_z}, + {"fcmped", 0xeeb40bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fcmpezd", 0xeeb50bc0, 7, FPU_VFP_EXT_V1, do_vfp_dp_compare_z}, + + /* VFP V2. */ + {"fmsrr", 0xec400a10, 5, FPU_VFP_EXT_V2, do_vfp_sp_reg2}, + {"fmrrs", 0xec500a10, 5, FPU_VFP_EXT_V2, do_vfp_sp_reg2}, + {"fmdrr", 0xec400b10, 5, FPU_VFP_EXT_V2, do_vfp_dp_from_reg2}, + {"fmrrd", 0xec500b10, 5, FPU_VFP_EXT_V2, do_vfp_reg2_from_dp}, + + /* Intel XScale extensions to ARM V5 ISA. (All use CP0). */ + {"mia", 0xee200010, 3, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miaph", 0xee280010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miabb", 0xee2c0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miabt", 0xee2d0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miatb", 0xee2e0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miatt", 0xee2f0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"mar", 0xec400000, 3, ARM_CEXT_XSCALE, do_xsc_mar}, + {"mra", 0xec500000, 3, ARM_CEXT_XSCALE, do_xsc_mra}, + + /* Cirrus Maverick instructions. */ + {"cfldrs", 0xec100400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_1}, + {"cfldrd", 0xec500400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_2}, + {"cfldr32", 0xec100500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_3}, + {"cfldr64", 0xec500500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_4}, + {"cfstrs", 0xec000400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_1}, + {"cfstrd", 0xec400400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_2}, + {"cfstr32", 0xec000500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_3}, + {"cfstr64", 0xec400500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_4}, + {"cfmvsr", 0xee000450, 6, ARM_CEXT_MAVERICK, do_mav_binops_2a}, + {"cfmvrs", 0xee100450, 6, ARM_CEXT_MAVERICK, do_mav_binops_1a}, + {"cfmvdlr", 0xee000410, 7, ARM_CEXT_MAVERICK, do_mav_binops_2b}, + {"cfmvrdl", 0xee100410, 7, ARM_CEXT_MAVERICK, do_mav_binops_1b}, + {"cfmvdhr", 0xee000430, 7, ARM_CEXT_MAVERICK, do_mav_binops_2b}, + {"cfmvrdh", 0xee100430, 7, ARM_CEXT_MAVERICK, do_mav_binops_1b}, + {"cfmv64lr", 0xee000510, 8, ARM_CEXT_MAVERICK, do_mav_binops_2c}, + {"cfmvr64l", 0xee100510, 8, ARM_CEXT_MAVERICK, do_mav_binops_1c}, + {"cfmv64hr", 0xee000530, 8, ARM_CEXT_MAVERICK, do_mav_binops_2c}, + {"cfmvr64h", 0xee100530, 8, ARM_CEXT_MAVERICK, do_mav_binops_1c}, + {"cfmval32", 0xee100610, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, + {"cfmv32al", 0xee000610, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, + {"cfmvam32", 0xee100630, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, + {"cfmv32am", 0xee000630, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, + {"cfmvah32", 0xee100650, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, + {"cfmv32ah", 0xee000650, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, + {"cfmva32", 0xee100670, 7, ARM_CEXT_MAVERICK, do_mav_binops_3a}, + {"cfmv32a", 0xee000670, 7, ARM_CEXT_MAVERICK, do_mav_binops_3b}, + {"cfmva64", 0xee100690, 7, ARM_CEXT_MAVERICK, do_mav_binops_3c}, + {"cfmv64a", 0xee000690, 7, ARM_CEXT_MAVERICK, do_mav_binops_3d}, + {"cfmvsc32", 0xee1006b0, 8, ARM_CEXT_MAVERICK, do_mav_dspsc_1}, + {"cfmv32sc", 0xee0006b0, 8, ARM_CEXT_MAVERICK, do_mav_dspsc_2}, + {"cfcpys", 0xee000400, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, + {"cfcpyd", 0xee000420, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, + {"cfcvtsd", 0xee000460, 7, ARM_CEXT_MAVERICK, do_mav_binops_1f}, + {"cfcvtds", 0xee000440, 7, ARM_CEXT_MAVERICK, do_mav_binops_1g}, + {"cfcvt32s", 0xee000480, 8, ARM_CEXT_MAVERICK, do_mav_binops_1h}, + {"cfcvt32d", 0xee0004a0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1i}, + {"cfcvt64s", 0xee0004c0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1j}, + {"cfcvt64d", 0xee0004e0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1k}, + {"cfcvts32", 0xee100580, 8, ARM_CEXT_MAVERICK, do_mav_binops_1l}, + {"cfcvtd32", 0xee1005a0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1m}, + {"cftruncs32", 0xee1005c0, 10, ARM_CEXT_MAVERICK, do_mav_binops_1l}, + {"cftruncd32", 0xee1005e0, 10, ARM_CEXT_MAVERICK, do_mav_binops_1m}, + {"cfrshl32", 0xee000550, 8, ARM_CEXT_MAVERICK, do_mav_triple_4a}, + {"cfrshl64", 0xee000570, 8, ARM_CEXT_MAVERICK, do_mav_triple_4b}, + {"cfsh32", 0xee000500, 6, ARM_CEXT_MAVERICK, do_mav_shift_1}, + {"cfsh64", 0xee200500, 6, ARM_CEXT_MAVERICK, do_mav_shift_2}, + {"cfcmps", 0xee100490, 6, ARM_CEXT_MAVERICK, do_mav_triple_5a}, + {"cfcmpd", 0xee1004b0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5b}, + {"cfcmp32", 0xee100590, 7, ARM_CEXT_MAVERICK, do_mav_triple_5c}, + {"cfcmp64", 0xee1005b0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5d}, + {"cfabss", 0xee300400, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, + {"cfabsd", 0xee300420, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, + {"cfnegs", 0xee300440, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, + {"cfnegd", 0xee300460, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, + {"cfadds", 0xee300480, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, + {"cfaddd", 0xee3004a0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, + {"cfsubs", 0xee3004c0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, + {"cfsubd", 0xee3004e0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, + {"cfmuls", 0xee100400, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, + {"cfmuld", 0xee100420, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, + {"cfabs32", 0xee300500, 7, ARM_CEXT_MAVERICK, do_mav_binops_1n}, + {"cfabs64", 0xee300520, 7, ARM_CEXT_MAVERICK, do_mav_binops_1o}, + {"cfneg32", 0xee300540, 7, ARM_CEXT_MAVERICK, do_mav_binops_1n}, + {"cfneg64", 0xee300560, 7, ARM_CEXT_MAVERICK, do_mav_binops_1o}, + {"cfadd32", 0xee300580, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfadd64", 0xee3005a0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, + {"cfsub32", 0xee3005c0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfsub64", 0xee3005e0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, + {"cfmul32", 0xee100500, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfmul64", 0xee100520, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, + {"cfmac32", 0xee100540, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfmsc32", 0xee100560, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfmadd32", 0xee000600, 8, ARM_CEXT_MAVERICK, do_mav_quad_6a}, + {"cfmsub32", 0xee100600, 8, ARM_CEXT_MAVERICK, do_mav_quad_6a}, + {"cfmadda32", 0xee200600, 9, ARM_CEXT_MAVERICK, do_mav_quad_6b}, + {"cfmsuba32", 0xee300600, 9, ARM_CEXT_MAVERICK, do_mav_quad_6b}, }; /* Defines for various bits that we will want to toggle. */ @@ -896,8 +1818,9 @@ static CONST struct asm_opcode insns[] = #define LDM_TYPE_2_OR_3 0x00400000 #define LITERAL_MASK 0xf000f000 -#define COND_MASK 0xf0000000 #define OPCODE_MASK 0xfe1fffff +#define V4_STR_BIT 0x00000020 + #define DATA_OP_SHIFT 21 /* Codes to distinguish the arithmetic instructions. */ @@ -918,6 +1841,7 @@ static CONST struct asm_opcode insns[] = #define OPCODE_BIC 14 #define OPCODE_MVN 15 +/* Thumb v1 (ARMv4T). */ static void do_t_nop PARAMS ((char *)); static void do_t_arit PARAMS ((char *)); static void do_t_add PARAMS ((char *)); @@ -943,6 +1867,10 @@ static void do_t_sub PARAMS ((char *)); static void do_t_swi PARAMS ((char *)); static void do_t_adr PARAMS ((char *)); +/* Thumb v2 (ARMv5T). */ +static void do_t_blx PARAMS ((char *)); +static void do_t_bkpt PARAMS ((char *)); + #define T_OPCODE_MUL 0x4340 #define T_OPCODE_TST 0x4200 #define T_OPCODE_CMN 0x42c0 @@ -1025,7 +1953,7 @@ static int thumb_reg PARAMS ((char ** str, int hi_lo)); struct thumb_opcode { /* Basic string to match. */ - CONST char * template; + const char * template; /* Basic instruction code. */ unsigned long value; @@ -1033,137 +1961,87 @@ struct thumb_opcode int size; /* Which CPU variants this exists for. */ - unsigned long variants; + unsigned long variant; /* Function to call to parse args. */ void (* parms) PARAMS ((char *)); }; -static CONST struct thumb_opcode tinsns[] = -{ - {"adc", 0x4140, 2, ARM_EXT_THUMB, do_t_arit}, - {"add", 0x0000, 2, ARM_EXT_THUMB, do_t_add}, - {"and", 0x4000, 2, ARM_EXT_THUMB, do_t_arit}, - {"asr", 0x0000, 2, ARM_EXT_THUMB, do_t_asr}, - {"b", T_OPCODE_BRANCH, 2, ARM_EXT_THUMB, do_t_branch12}, - {"beq", 0xd0fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bne", 0xd1fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bcs", 0xd2fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bhs", 0xd2fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bcc", 0xd3fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bul", 0xd3fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"blo", 0xd3fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bmi", 0xd4fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bpl", 0xd5fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bvs", 0xd6fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bvc", 0xd7fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bhi", 0xd8fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bls", 0xd9fe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bge", 0xdafe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"blt", 0xdbfe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bgt", 0xdcfe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"ble", 0xddfe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bal", 0xdefe, 2, ARM_EXT_THUMB, do_t_branch9}, - {"bic", 0x4380, 2, ARM_EXT_THUMB, do_t_arit}, - {"bl", 0xf7fffffe, 4, ARM_EXT_THUMB, do_t_branch23}, - {"blx", 0, 0, ARM_EXT_V5, do_t_blx}, - {"bkpt", 0xbe00, 2, ARM_EXT_V5, do_t_bkpt}, - {"bx", 0x4700, 2, ARM_EXT_THUMB, do_t_bx}, - {"cmn", T_OPCODE_CMN, 2, ARM_EXT_THUMB, do_t_arit}, - {"cmp", 0x0000, 2, ARM_EXT_THUMB, do_t_compare}, - {"eor", 0x4040, 2, ARM_EXT_THUMB, do_t_arit}, - {"ldmia", 0xc800, 2, ARM_EXT_THUMB, do_t_ldmstm}, - {"ldr", 0x0000, 2, ARM_EXT_THUMB, do_t_ldr}, - {"ldrb", 0x0000, 2, ARM_EXT_THUMB, do_t_ldrb}, - {"ldrh", 0x0000, 2, ARM_EXT_THUMB, do_t_ldrh}, - {"ldrsb", 0x5600, 2, ARM_EXT_THUMB, do_t_lds}, - {"ldrsh", 0x5e00, 2, ARM_EXT_THUMB, do_t_lds}, - {"ldsb", 0x5600, 2, ARM_EXT_THUMB, do_t_lds}, - {"ldsh", 0x5e00, 2, ARM_EXT_THUMB, do_t_lds}, - {"lsl", 0x0000, 2, ARM_EXT_THUMB, do_t_lsl}, - {"lsr", 0x0000, 2, ARM_EXT_THUMB, do_t_lsr}, - {"mov", 0x0000, 2, ARM_EXT_THUMB, do_t_mov}, - {"mul", T_OPCODE_MUL, 2, ARM_EXT_THUMB, do_t_arit}, - {"mvn", T_OPCODE_MVN, 2, ARM_EXT_THUMB, do_t_arit}, - {"neg", T_OPCODE_NEG, 2, ARM_EXT_THUMB, do_t_arit}, - {"orr", 0x4300, 2, ARM_EXT_THUMB, do_t_arit}, - {"pop", 0xbc00, 2, ARM_EXT_THUMB, do_t_push_pop}, - {"push", 0xb400, 2, ARM_EXT_THUMB, do_t_push_pop}, - {"ror", 0x41c0, 2, ARM_EXT_THUMB, do_t_arit}, - {"sbc", 0x4180, 2, ARM_EXT_THUMB, do_t_arit}, - {"stmia", 0xc000, 2, ARM_EXT_THUMB, do_t_ldmstm}, - {"str", 0x0000, 2, ARM_EXT_THUMB, do_t_str}, - {"strb", 0x0000, 2, ARM_EXT_THUMB, do_t_strb}, - {"strh", 0x0000, 2, ARM_EXT_THUMB, do_t_strh}, - {"swi", 0xdf00, 2, ARM_EXT_THUMB, do_t_swi}, - {"sub", 0x0000, 2, ARM_EXT_THUMB, do_t_sub}, - {"tst", T_OPCODE_TST, 2, ARM_EXT_THUMB, do_t_arit}, +static const struct thumb_opcode tinsns[] = +{ + /* Thumb v1 (ARMv4T). */ + {"adc", 0x4140, 2, ARM_EXT_V4T, do_t_arit}, + {"add", 0x0000, 2, ARM_EXT_V4T, do_t_add}, + {"and", 0x4000, 2, ARM_EXT_V4T, do_t_arit}, + {"asr", 0x0000, 2, ARM_EXT_V4T, do_t_asr}, + {"b", T_OPCODE_BRANCH, 2, ARM_EXT_V4T, do_t_branch12}, + {"beq", 0xd0fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bne", 0xd1fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bcs", 0xd2fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bhs", 0xd2fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bcc", 0xd3fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bul", 0xd3fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"blo", 0xd3fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bmi", 0xd4fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bpl", 0xd5fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bvs", 0xd6fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bvc", 0xd7fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bhi", 0xd8fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bls", 0xd9fe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bge", 0xdafe, 2, ARM_EXT_V4T, do_t_branch9}, + {"blt", 0xdbfe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bgt", 0xdcfe, 2, ARM_EXT_V4T, do_t_branch9}, + {"ble", 0xddfe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bal", 0xdefe, 2, ARM_EXT_V4T, do_t_branch9}, + {"bic", 0x4380, 2, ARM_EXT_V4T, do_t_arit}, + {"bl", 0xf7fffffe, 4, ARM_EXT_V4T, do_t_branch23}, + {"bx", 0x4700, 2, ARM_EXT_V4T, do_t_bx}, + {"cmn", T_OPCODE_CMN, 2, ARM_EXT_V4T, do_t_arit}, + {"cmp", 0x0000, 2, ARM_EXT_V4T, do_t_compare}, + {"eor", 0x4040, 2, ARM_EXT_V4T, do_t_arit}, + {"ldmia", 0xc800, 2, ARM_EXT_V4T, do_t_ldmstm}, + {"ldr", 0x0000, 2, ARM_EXT_V4T, do_t_ldr}, + {"ldrb", 0x0000, 2, ARM_EXT_V4T, do_t_ldrb}, + {"ldrh", 0x0000, 2, ARM_EXT_V4T, do_t_ldrh}, + {"ldrsb", 0x5600, 2, ARM_EXT_V4T, do_t_lds}, + {"ldrsh", 0x5e00, 2, ARM_EXT_V4T, do_t_lds}, + {"ldsb", 0x5600, 2, ARM_EXT_V4T, do_t_lds}, + {"ldsh", 0x5e00, 2, ARM_EXT_V4T, do_t_lds}, + {"lsl", 0x0000, 2, ARM_EXT_V4T, do_t_lsl}, + {"lsr", 0x0000, 2, ARM_EXT_V4T, do_t_lsr}, + {"mov", 0x0000, 2, ARM_EXT_V4T, do_t_mov}, + {"mul", T_OPCODE_MUL, 2, ARM_EXT_V4T, do_t_arit}, + {"mvn", T_OPCODE_MVN, 2, ARM_EXT_V4T, do_t_arit}, + {"neg", T_OPCODE_NEG, 2, ARM_EXT_V4T, do_t_arit}, + {"orr", 0x4300, 2, ARM_EXT_V4T, do_t_arit}, + {"pop", 0xbc00, 2, ARM_EXT_V4T, do_t_push_pop}, + {"push", 0xb400, 2, ARM_EXT_V4T, do_t_push_pop}, + {"ror", 0x41c0, 2, ARM_EXT_V4T, do_t_arit}, + {"sbc", 0x4180, 2, ARM_EXT_V4T, do_t_arit}, + {"stmia", 0xc000, 2, ARM_EXT_V4T, do_t_ldmstm}, + {"str", 0x0000, 2, ARM_EXT_V4T, do_t_str}, + {"strb", 0x0000, 2, ARM_EXT_V4T, do_t_strb}, + {"strh", 0x0000, 2, ARM_EXT_V4T, do_t_strh}, + {"swi", 0xdf00, 2, ARM_EXT_V4T, do_t_swi}, + {"sub", 0x0000, 2, ARM_EXT_V4T, do_t_sub}, + {"tst", T_OPCODE_TST, 2, ARM_EXT_V4T, do_t_arit}, /* Pseudo ops: */ - {"adr", 0x0000, 2, ARM_EXT_THUMB, do_t_adr}, - {"nop", 0x46C0, 2, ARM_EXT_THUMB, do_t_nop}, /* mov r8,r8 */ -}; - -struct reg_entry -{ - CONST char * name; - int number; -}; - -#define int_register(reg) ((reg) >= 0 && (reg) <= 15) -#define cp_register(reg) ((reg) >= 32 && (reg) <= 47) -#define fp_register(reg) ((reg) >= 16 && (reg) <= 23) - -#define REG_PC 15 -#define REG_LR 14 -#define REG_SP 13 - -/* These are the standard names. Users can add aliases with .req. */ -static CONST struct reg_entry reg_table[] = -{ - /* Processor Register Numbers. */ - {"r0", 0}, {"r1", 1}, {"r2", 2}, {"r3", 3}, - {"r4", 4}, {"r5", 5}, {"r6", 6}, {"r7", 7}, - {"r8", 8}, {"r9", 9}, {"r10", 10}, {"r11", 11}, - {"r12", 12}, {"r13", REG_SP},{"r14", REG_LR},{"r15", REG_PC}, - /* APCS conventions. */ - {"a1", 0}, {"a2", 1}, {"a3", 2}, {"a4", 3}, - {"v1", 4}, {"v2", 5}, {"v3", 6}, {"v4", 7}, {"v5", 8}, - {"v6", 9}, {"sb", 9}, {"v7", 10}, {"sl", 10}, - {"fp", 11}, {"ip", 12}, {"sp", REG_SP},{"lr", REG_LR},{"pc", REG_PC}, - /* ATPCS additions to APCS conventions. */ - {"wr", 7}, {"v8", 11}, - /* FP Registers. */ - {"f0", 16}, {"f1", 17}, {"f2", 18}, {"f3", 19}, - {"f4", 20}, {"f5", 21}, {"f6", 22}, {"f7", 23}, - {"c0", 32}, {"c1", 33}, {"c2", 34}, {"c3", 35}, - {"c4", 36}, {"c5", 37}, {"c6", 38}, {"c7", 39}, - {"c8", 40}, {"c9", 41}, {"c10", 42}, {"c11", 43}, - {"c12", 44}, {"c13", 45}, {"c14", 46}, {"c15", 47}, - {"cr0", 32}, {"cr1", 33}, {"cr2", 34}, {"cr3", 35}, - {"cr4", 36}, {"cr5", 37}, {"cr6", 38}, {"cr7", 39}, - {"cr8", 40}, {"cr9", 41}, {"cr10", 42}, {"cr11", 43}, - {"cr12", 44}, {"cr13", 45}, {"cr14", 46}, {"cr15", 47}, - /* ATPCS additions to float register names. */ - {"s0",16}, {"s1",17}, {"s2",18}, {"s3",19}, - {"s4",20}, {"s5",21}, {"s6",22}, {"s7",23}, - {"d0",16}, {"d1",17}, {"d2",18}, {"d3",19}, - {"d4",20}, {"d5",21}, {"d6",22}, {"d7",23}, - /* FIXME: At some point we need to add VFP register names. */ - /* Array terminator. */ - {NULL, 0} + {"adr", 0x0000, 2, ARM_EXT_V4T, do_t_adr}, + {"nop", 0x46C0, 2, ARM_EXT_V4T, do_t_nop}, /* mov r8,r8 */ + /* Thumb v2 (ARMv5T). */ + {"blx", 0, 0, ARM_EXT_V5T, do_t_blx}, + {"bkpt", 0xbe00, 2, ARM_EXT_V5T, do_t_bkpt}, }; -#define BAD_ARGS _("Bad arguments to instruction") +#define BAD_ARGS _("bad arguments to instruction") #define BAD_PC _("r15 not allowed here") -#define BAD_FLAGS _("Instruction should not have flags") -#define BAD_COND _("Instruction is not conditional") +#define BAD_COND _("instruction is not conditional") #define ERR_NO_ACCUM _("acc0 expected") static struct hash_control * arm_ops_hsh = NULL; static struct hash_control * arm_tops_hsh = NULL; static struct hash_control * arm_cond_hsh = NULL; static struct hash_control * arm_shift_hsh = NULL; -static struct hash_control * arm_reg_hsh = NULL; static struct hash_control * arm_psr_hsh = NULL; /* This table describes all the machine specific pseudo-ops the assembler @@ -1192,7 +2070,7 @@ static void s_arm_elf_cons PARAMS ((int)); static int my_get_expression PARAMS ((expressionS *, char **)); -CONST pseudo_typeS md_pseudo_table[] = +const pseudo_typeS md_pseudo_table[] = { /* Never called becasue '.req' does not start line. */ { "req", s_req, 0 }, @@ -1228,6 +2106,12 @@ CONST pseudo_typeS md_pseudo_table[] = { 0, 0, 0 } }; +/* Other internal functions. */ +static int arm_parse_extension PARAMS ((char *, int *)); +static int arm_parse_cpu PARAMS ((char *)); +static int arm_parse_arch PARAMS ((char *)); +static int arm_parse_fpu PARAMS ((char *)); + /* Stuff needed to resolve the label ambiguity As: ... @@ -1297,7 +2181,7 @@ add_to_lit_pool () { if (next_literal_pool_place >= MAX_LITERAL_POOL_SIZE) { - inst.error = _("Literal Pool Overflow"); + inst.error = _("literal pool overflow"); return FAIL; } @@ -1318,7 +2202,7 @@ add_to_lit_pool () static void symbol_locate (symbolP, name, segment, valu, frag) symbolS * symbolP; - CONST char * name; /* It is copied, the caller can modify. */ + const char * name; /* It is copied, the caller can modify. */ segT segment; /* Segment identifier (SEG_<something>). */ valueT valu; /* Symbol value. */ fragS * frag; /* Associated fragment. */ @@ -1439,7 +2323,7 @@ static void s_req (a) int a ATTRIBUTE_UNUSED; { - as_bad (_("Invalid syntax for .req directive.")); + as_bad (_("invalid syntax for .req directive")); } static void @@ -1514,10 +2398,10 @@ s_align (unused) temp = get_absolute_expression (); if (temp > max_alignment) - as_bad (_("Alignment too large: %d. assumed."), temp = max_alignment); + as_bad (_("alignment too large: %d assumed"), temp = max_alignment); else if (temp < 0) { - as_bad (_("Alignment negative. 0 assumed.")); + as_bad (_("alignment negative. 0 assumed.")); temp = 0; } @@ -1601,7 +2485,7 @@ s_thumb_set (equiv) if (*input_line_pointer != ',') { *end_name = 0; - as_bad (_("Expected comma after name \"%s\""), name); + as_bad (_("expected comma after name \"%s\""), name); *end_name = delim; ignore_rest_of_line (); return; @@ -1721,7 +2605,7 @@ opcode_select (width) case 16: if (! thumb_mode) { - if (! (cpu_variant & ARM_EXT_THUMB)) + if (! (cpu_variant & ARM_EXT_V4T)) as_bad (_("selected processor does not support THUMB opcodes")); thumb_mode = 1; @@ -1734,7 +2618,7 @@ opcode_select (width) case 32: if (thumb_mode) { - if ((cpu_variant & ARM_ANY) == ARM_EXT_THUMB) + if ((cpu_variant & ARM_ALL) == ARM_EXT_V4T) as_bad (_("selected processor does not support ARM opcodes")); thumb_mode = 0; @@ -1788,12 +2672,12 @@ s_code (unused) static void end_of_line (str) - char * str; + char *str; { skip_whitespace (str); - if (* str != '\0') - inst.error = _("Garbage following instruction"); + if (*str != '\0' && !inst.error) + inst.error = _("garbage following instruction"); } static int @@ -1831,7 +2715,7 @@ reg_required_here (str, shift) int reg; char * start = * str; - if ((reg = arm_reg_parse (str)) != FAIL && int_register (reg)) + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_RN].htab)) != FAIL) { if (shift >= 0) inst.instruction |= reg << shift; @@ -1843,20 +2727,20 @@ reg_required_here (str, shift) /* In the few cases where we might be able to accept something else this error can be overridden. */ - sprintf (buff, _("Register expected, not '%.100s'"), start); + sprintf (buff, _("register expected, not '%.100s'"), start); inst.error = buff; return FAIL; } -static CONST struct asm_psr * +static const struct asm_psr * arm_psr_parse (ccp) register char ** ccp; { char * start = * ccp; char c; char * p; - CONST struct asm_psr * psr; + const struct asm_psr * psr; p = start; @@ -1865,7 +2749,7 @@ arm_psr_parse (ccp) { c = *p++; } - while (isalpha (c) || c == '_'); + while (ISALPHA (c) || c == '_'); /* Terminate the word. */ *--p = 0; @@ -1878,7 +2762,7 @@ arm_psr_parse (ccp) strncpy (start, "SPSR", 4); /* Now locate the word in the psr hash table. */ - psr = (CONST struct asm_psr *) hash_find (arm_psr_hsh, start); + psr = (const struct asm_psr *) hash_find (arm_psr_hsh, start); /* Restore the input stream. */ *p = c; @@ -1897,7 +2781,7 @@ psr_required_here (str) char ** str; { char * start = * str; - CONST struct asm_psr * psr; + const struct asm_psr * psr; psr = arm_psr_parse (str); @@ -1924,36 +2808,41 @@ psr_required_here (str) static int co_proc_number (str) - char ** str; + char **str; { int processor, pchar; + char *start; - skip_whitespace (* str); + skip_whitespace (*str); + start = *str; /* The data sheet seems to imply that just a number on its own is valid here, but the RISC iX assembler seems to accept a prefix 'p'. We will accept either. */ - if (**str == 'p' || **str == 'P') - (*str)++; - - pchar = *(*str)++; - if (pchar >= '0' && pchar <= '9') + if ((processor = arm_reg_parse (str, all_reg_maps[REG_TYPE_CP].htab)) + == FAIL) { - processor = pchar - '0'; - if (**str >= '0' && **str <= '9') + *str = start; + + pchar = *(*str)++; + if (pchar >= '0' && pchar <= '9') { - processor = processor * 10 + *(*str)++ - '0'; - if (processor > 15) + processor = pchar - '0'; + if (**str >= '0' && **str <= '9') { - inst.error = _("Illegal co-processor number"); - return FAIL; + processor = processor * 10 + *(*str)++ - '0'; + if (processor > 15) + { + inst.error = _("illegal co-processor number"); + return FAIL; + } } } - } - else - { - inst.error = _("Bad or missing co-processor number"); - return FAIL; + else + { + inst.error = _("bad or missing co-processor number"); + return FAIL; + } } inst.instruction |= processor << 8; @@ -1998,16 +2887,15 @@ cp_reg_required_here (str, where) int reg; char * start = *str; - if ((reg = arm_reg_parse (str)) != FAIL && cp_register (reg)) + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_CN].htab)) != FAIL) { - reg &= 15; inst.instruction |= reg << where; return reg; } /* In the few cases where we might be able to accept something else this error can be overridden. */ - inst.error = _("Co-processor register expected"); + inst.error = _("co-processor register expected"); /* Restore the start point. */ *str = start; @@ -2022,16 +2910,15 @@ fp_reg_required_here (str, where) int reg; char * start = * str; - if ((reg = arm_reg_parse (str)) != FAIL && fp_register (reg)) + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_FN].htab)) != FAIL) { - reg &= 7; inst.instruction |= reg << where; return reg; } /* In the few cases where we might be able to accept something else this error can be overridden. */ - inst.error = _("Floating point register expected"); + inst.error = _("floating point register expected"); /* Restore the start point. */ *str = start; @@ -2087,8 +2974,9 @@ cp_address_offset (str) } static int -cp_address_required_here (str) +cp_address_required_here (str, wb_ok) char ** str; + int wb_ok; { char * p = * str; int pre_inc = 0; @@ -2110,7 +2998,7 @@ cp_address_required_here (str) { p++; - if (skip_past_comma (& p) == SUCCESS) + if (wb_ok && skip_past_comma (& p) == SUCCESS) { /* [Rn], #expr */ write_back = WRITE_BACK; @@ -2152,7 +3040,7 @@ cp_address_required_here (str) skip_whitespace (p); - if (*p == '!') + if (wb_ok && *p == '!') { if (reg == REG_PC) { @@ -2183,20 +3071,17 @@ cp_address_required_here (str) } static void -do_nop (str, flags) +do_empty (str) char * str; - unsigned long flags; { /* Do nothing really. */ - inst.instruction |= flags; /* This is pointless. */ end_of_line (str); return; } static void -do_mrs (str, flags) +do_mrs (str) char *str; - unsigned long flags; { int skip = 0; @@ -2230,7 +3115,7 @@ do_mrs (str, flags) skip = 8; else { - inst.error = _("{C|S}PSR expected"); + inst.error = _("CPSR or SPSR expected"); return; } @@ -2238,7 +3123,6 @@ do_mrs (str, flags) inst.instruction |= SPSR_BIT; str += skip; - inst.instruction |= flags; end_of_line (str); } @@ -2247,9 +3131,8 @@ do_mrs (str, flags) "{C|S}PSR_f, #expression". */ static void -do_msr (str, flags) +do_msr (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -2267,7 +3150,6 @@ do_msr (str, flags) if (reg_required_here (& str, 0) != FAIL) { inst.error = NULL; - inst.instruction |= flags; end_of_line (str); return; } @@ -2301,7 +3183,7 @@ do_msr (str, flags) } #endif - flags |= INST_IMMEDIATE; + inst.instruction |= INST_IMMEDIATE; if (inst.reloc.exp.X_add_symbol) { @@ -2314,7 +3196,7 @@ do_msr (str, flags) if (value == (unsigned) FAIL) { - inst.error = _("Invalid constant"); + inst.error = _("invalid constant"); return; } @@ -2322,7 +3204,6 @@ do_msr (str, flags) } inst.error = NULL; - inst.instruction |= flags; end_of_line (str); } @@ -2333,9 +3214,8 @@ do_msr (str, flags) SMLAL RdLo, RdHi, Rm, Rs. */ static void -do_mull (str, flags) +do_mull (str) char * str; - unsigned long flags; { int rdlo, rdhi, rm, rs; @@ -2379,15 +3259,13 @@ do_mull (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_mul (str, flags) +do_mul (str) char * str; - unsigned long flags; { int rd, rm; @@ -2435,15 +3313,13 @@ do_mul (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_mla (str, flags) +do_mla (str) char * str; - unsigned long flags; { int rd, rm; @@ -2493,7 +3369,6 @@ do_mla (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } @@ -2518,7 +3393,7 @@ accum0_required_here (str) *str = p; /* Advance caller's string pointer too. */ c = *p++; - while (isalnum (c)) + while (ISALNUM (c)) c = *p++; *--p = 0; /* Aap nul into input buffer at non-alnum. */ @@ -2570,7 +3445,7 @@ ld_mode_required_here (string) if (skip_past_comma (& str) == SUCCESS) { /* [Rn],... (post inc) */ - if (ldst_extend (& str, 1) == FAIL) + if (ldst_extend_v4 (&str) == FAIL) return FAIL; } else /* [Rn] */ @@ -2597,7 +3472,7 @@ ld_mode_required_here (string) pre_inc = 1; - if (ldst_extend (& str, 1) == FAIL) + if (ldst_extend_v4 (&str) == FAIL) return FAIL; skip_whitespace (str); @@ -2648,9 +3523,8 @@ ld_mode_required_here (string) Error if any register is R15. */ static void -do_smla (str, flags) +do_smla (str) char * str; - unsigned long flags; { int rd, rm, rs, rn; @@ -2668,9 +3542,6 @@ do_smla (str, flags) else if (rd == REG_PC || rm == REG_PC || rs == REG_PC || rn == REG_PC) inst.error = BAD_PC; - else if (flags) - inst.error = BAD_FLAGS; - else end_of_line (str); } @@ -2681,9 +3552,8 @@ do_smla (str, flags) Warning if Rdlo == Rdhi. */ static void -do_smlal (str, flags) +do_smlal (str) char * str; - unsigned long flags; { int rdlo, rdhi, rm, rs; @@ -2710,10 +3580,7 @@ do_smlal (str, flags) if (rdlo == rdhi) as_tsktsk (_("rdhi and rdlo must be different")); - if (flags) - inst.error = BAD_FLAGS; - else - end_of_line (str); + end_of_line (str); } /* ARM V5E (El Segundo) signed-multiply (argument parse) @@ -2721,9 +3588,8 @@ do_smlal (str, flags) Error if any register is R15. */ static void -do_smul (str, flags) +do_smul (str) char * str; - unsigned long flags; { int rd, rm, rs; @@ -2739,9 +3605,6 @@ do_smul (str, flags) else if (rd == REG_PC || rm == REG_PC || rs == REG_PC) inst.error = BAD_PC; - else if (flags) - inst.error = BAD_FLAGS; - else end_of_line (str); } @@ -2751,9 +3614,8 @@ do_smul (str, flags) Error if any register is R15. */ static void -do_qadd (str, flags) +do_qadd (str) char * str; - unsigned long flags; { int rd, rm, rn; @@ -2769,9 +3631,6 @@ do_qadd (str, flags) else if (rd == REG_PC || rm == REG_PC || rn == REG_PC) inst.error = BAD_PC; - else if (flags) - inst.error = BAD_FLAGS; - else end_of_line (str); } @@ -2786,9 +3645,8 @@ do_qadd (str, flags) Result unpredicatable if Rd or Rn is R15. */ static void -do_co_reg2c (str, flags) +do_co_reg2c (str) char * str; - unsigned long flags; { int rd, rn; @@ -2828,7 +3686,7 @@ do_co_reg2c (str, flags) /* Unpredictable result if rd or rn is R15. */ if (rd == REG_PC || rn == REG_PC) as_tsktsk - (_("Warning: Instruction unpredictable when using r15")); + (_("Warning: instruction unpredictable when using r15")); if (skip_past_comma (& str) == FAIL || cp_reg_required_here (& str, 0) == FAIL) @@ -2838,9 +3696,6 @@ do_co_reg2c (str, flags) return; } - if (flags) - inst.error = BAD_COND; - end_of_line (str); } @@ -2850,18 +3705,11 @@ do_co_reg2c (str, flags) Error if Rd or Rm are R15. */ static void -do_clz (str, flags) +do_clz (str) char * str; - unsigned long flags; { int rd, rm; - if (flags) - { - as_bad (BAD_FLAGS); - return; - } - skip_whitespace (str); if (((rd = reg_required_here (& str, 12)) == FAIL) @@ -2883,13 +3731,9 @@ do_clz (str, flags) Otherwise, it's the same as LDC/STC. */ static void -do_lstc2 (str, flags) +do_lstc2 (str) char * str; - unsigned long flags; { - if (flags) - inst.error = BAD_COND; - skip_whitespace (str); if (co_proc_number (& str) == FAIL) @@ -2904,7 +3748,7 @@ do_lstc2 (str, flags) inst.error = BAD_ARGS; } else if (skip_past_comma (& str) == FAIL - || cp_address_required_here (& str) == FAIL) + || cp_address_required_here (&str, CP_WB_OK) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; @@ -2919,9 +3763,8 @@ do_lstc2 (str, flags) Otherwise, it's the same as CDP. */ static void -do_cdp2 (str, flags) +do_cdp2 (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -2974,9 +3817,6 @@ do_cdp2 (str, flags) } } - if (flags) - inst.error = BAD_FLAGS; - end_of_line (str); } @@ -2987,9 +3827,8 @@ do_cdp2 (str, flags) Otherwise, it's the same as MCR/MRC. */ static void -do_co_reg2 (str, flags) +do_co_reg2 (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -3042,8 +3881,27 @@ do_co_reg2 (str, flags) } } - if (flags) - inst.error = BAD_COND; + end_of_line (str); +} + +/* ARM v5TEJ. Jump to Jazelle code. */ +static void +do_bxj (str) + char * str; +{ + int reg; + + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 0)) == FAIL) + { + inst.error = BAD_ARGS; + return; + } + + /* Note - it is not illegal to do a "bxj pc". Useless, but not illegal. */ + if (reg == REG_PC) + as_tsktsk (_("use of r15 in bxj is not really useful")); end_of_line (str); } @@ -3091,9 +3949,8 @@ do_t_bkpt (str) new one that can cope with setting one extra bit (the H bit). */ static void -do_branch25 (str, flags) +do_branch25 (str) char * str; - unsigned long flags ATTRIBUTE_UNUSED; { if (my_get_expression (& inst.reloc.exp, & str)) return; @@ -3146,19 +4003,12 @@ do_branch25 (str, flags) Also, the <target_addr> can be 25 bits, hence has its own reloc. */ static void -do_blx (str, flags) +do_blx (str) char * str; - unsigned long flags; { char * mystr = str; int rm; - if (flags) - { - as_bad (BAD_FLAGS); - return; - } - skip_whitespace (mystr); rm = reg_required_here (& mystr, 0); @@ -3171,7 +4021,7 @@ do_blx (str, flags) Use the condition code our caller put in inst.instruction. Pass ourselves off as a BX with a funny opcode. */ inst.instruction |= 0x012fff30; - do_bx (str, flags); + do_bx (str); } else { @@ -3186,7 +4036,7 @@ do_blx (str, flags) /* Process like a B/BL, but with a different reloc. Note that B/BL expecte fffffe, not 0, offset in the opcode table. */ - do_branch25 (str, flags); + do_branch25 (str); } } @@ -3238,13 +4088,11 @@ do_t_blx (str) BKPT <16 bit unsigned immediate> Instruction is not conditional. The bit pattern given in insns[] has the COND_ALWAYS condition, - and it is an error if the caller tried to override that. - Note "flags" is nonzero if a flag was supplied (which is an error). */ + and it is an error if the caller tried to override that. */ static void -do_bkpt (str, flags) +do_bkpt (str) char * str; - unsigned long flags; { expressionS expr; unsigned long number; @@ -3279,9 +4127,6 @@ do_bkpt (str, flags) inst.instruction |= number & 0xf; end_of_line (str); - - if (flags) - inst.error = BAD_FLAGS; } /* Xscale multiply-accumulate (argument parse) @@ -3290,17 +4135,13 @@ do_bkpt (str, flags) MIAxycc acc0,Rm,Rs. */ static void -do_mia (str, flags) +do_xsc_mia (str) char * str; - unsigned long flags; { int rs; int rm; - if (flags) - as_bad (BAD_FLAGS); - - else if (accum0_required_here (& str) == FAIL) + if (accum0_required_here (& str) == FAIL) inst.error = ERR_NO_ACCUM; else if (skip_past_comma (& str) == FAIL @@ -3324,16 +4165,12 @@ do_mia (str, flags) MARcc acc0,RdLo,RdHi. */ static void -do_mar (str, flags) +do_xsc_mar (str) char * str; - unsigned long flags; { int rdlo, rdhi; - if (flags) - as_bad (BAD_FLAGS); - - else if (accum0_required_here (& str) == FAIL) + if (accum0_required_here (& str) == FAIL) inst.error = ERR_NO_ACCUM; else if (skip_past_comma (& str) == FAIL @@ -3357,19 +4194,12 @@ do_mar (str, flags) MRAcc RdLo,RdHi,acc0. */ static void -do_mra (str, flags) +do_xsc_mra (str) char * str; - unsigned long flags; { int rdlo; int rdhi; - if (flags) - { - as_bad (BAD_FLAGS); - return; - } - skip_whitespace (str); if ((rdlo = reg_required_here (& str, 12)) == FAIL) @@ -3393,25 +4223,18 @@ do_mra (str, flags) end_of_line (str); } -/* Xscale: Preload-Cache +/* ARMv5TE: Preload-Cache PLD <addr_mode> Syntactically, like LDR with B=1, W=0, L=1. */ static void -do_pld (str, flags) +do_pld (str) char * str; - unsigned long flags; { int rd; - if (flags) - { - as_bad (BAD_FLAGS); - return; - } - skip_whitespace (str); if (* str != '[') @@ -3420,7 +4243,7 @@ do_pld (str, flags) return; } - ++ str; + ++str; skip_whitespace (str); if ((rd = reg_required_here (& str, 16)) == FAIL) @@ -3428,21 +4251,23 @@ do_pld (str, flags) skip_whitespace (str); - if (* str == ']') + if (*str == ']') { /* [Rn], ... ? */ - ++ str; + ++str; skip_whitespace (str); - if (skip_past_comma (& str) == SUCCESS) + /* Post-indexed addressing is not allowed with PLD. */ + if (skip_past_comma (&str) == SUCCESS) { - if (ldst_extend (& str, 0) == FAIL) - return; + inst.error + = _("post-indexed expression used in preload instruction"); + return; } - else if (* str == '!') /* [Rn]! */ + else if (*str == '!') /* [Rn]! */ { inst.error = _("writeback used in preload instruction"); - ++ str; + ++str; } else /* [Rn] */ inst.instruction |= INDEX_UP | PRE_INDEX; @@ -3455,7 +4280,7 @@ do_pld (str, flags) return; } - if (ldst_extend (& str, 0) == FAIL) + if (ldst_extend (&str) == FAIL) return; skip_whitespace (str); @@ -3481,49 +4306,19 @@ do_pld (str, flags) end_of_line (str); } -/* Xscale load-consecutive (argument parse) +/* ARMv5TE load-consecutive (argument parse) Mode is like LDRH. LDRccD R, mode STRccD R, mode. */ static void -do_ldrd (str, flags) +do_ldrd (str) char * str; - unsigned long flags; { int rd; int rn; - if (flags != DOUBLE_LOAD_FLAG) - { - /* Change instruction pattern to normal ldr/str. */ - if (inst.instruction & 0x20) - inst.instruction = (inst.instruction & COND_MASK) | 0x04000000; /* str */ - else - inst.instruction = (inst.instruction & COND_MASK) | 0x04100000; /* ldr */ - - /* Perform a normal load/store instruction parse. */ - do_ldst (str, flags); - - return; - } - - if ((cpu_variant & ARM_EXT_XSCALE) != ARM_EXT_XSCALE) - { - static char buff[128]; - - --str; - while (isspace (*str)) - --str; - str -= 4; - - /* Deny all knowledge. */ - sprintf (buff, _("bad instruction '%.100s'"), str); - inst.error = buff; - return; - } - skip_whitespace (str); if ((rd = reg_required_here (& str, 12)) == FAIL) @@ -3543,22 +4338,32 @@ do_ldrd (str, flags) /* inst.instruction has now been zapped with Rd and the addressing mode. */ if (rd & 1) /* Unpredictable result if Rd is odd. */ { - inst.error = _("Destination register must be even"); + inst.error = _("destination register must be even"); return; } - if (rd == REG_LR || rd == 12) + if (rd == REG_LR) { - inst.error = _("r12 or r14 not allowed here"); + inst.error = _("r14 not allowed here"); return; } if (((rd == rn) || (rd + 1 == rn)) - && - ((inst.instruction & WRITE_BACK) - || (!(inst.instruction & PRE_INDEX)))) + && ((inst.instruction & WRITE_BACK) + || (!(inst.instruction & PRE_INDEX)))) as_warn (_("pre/post-indexing used when modified address register is destination")); + /* For an index-register load, the index register must not overlap the + destination (even if not write-back). */ + if ((inst.instruction & V4_STR_BIT) == 0 + && (inst.instruction & HWOFFSET_IMM) == 0) + { + int rm = inst.instruction & 0x0000000f; + + if (rm == rd || (rm == rd + 1)) + as_warn (_("ldrd destination registers must not overlap index register")); + } + end_of_line (str); } @@ -3651,6 +4456,8 @@ walk_no_bignums (sp) return 0; } +static int in_my_get_expression = 0; + static int my_get_expression (ep, str) expressionS * ep; @@ -3661,7 +4468,17 @@ my_get_expression (ep, str) save_in = input_line_pointer; input_line_pointer = *str; + in_my_get_expression = 1; seg = expression (ep); + in_my_get_expression = 0; + + if (ep->X_op == O_illegal) + { + /* We found a bad expression in md_operand(). */ + *str = input_line_pointer; + input_line_pointer = save_in; + return 1; + } #ifdef OBJ_AOUT if (seg != absolute_section @@ -3686,7 +4503,7 @@ my_get_expression (ep, str) || (ep->X_op_symbol && walk_no_bignums (ep->X_op_symbol))))) { - inst.error = _("Invalid constant"); + inst.error = _("invalid constant"); *str = input_line_pointer; input_line_pointer = save_in; return 1; @@ -3697,6 +4514,20 @@ my_get_expression (ep, str) return 0; } +/* We handle all bad expressions here, so that we can report the faulty + instruction in the error message. */ +void +md_operand (expr) + expressionS *expr; +{ + if (in_my_get_expression) + { + expr->X_op = O_illegal; + if (inst.error == NULL) + inst.error = _("bad expression"); + } +} + /* UNRESTRICT should be one if <shift> <register> is permitted for this instruction. */ @@ -3711,12 +4542,12 @@ decode_shift (str, unrestrict) skip_whitespace (* str); - for (p = * str; isalpha (* p); p ++) + for (p = * str; ISALPHA (* p); p ++) ; if (p == * str) { - inst.error = _("Shift expression expected"); + inst.error = _("shift expression expected"); return FAIL; } @@ -3727,7 +4558,7 @@ decode_shift (str, unrestrict) if (shift == NULL) { - inst.error = _("Shift expression expected"); + inst.error = _("shift expression expected"); return FAIL; } @@ -3782,13 +4613,13 @@ decode_shift (str, unrestrict) about this though. */ if (num == 0) { - as_warn (_("Shift of 0 ignored.")); + as_warn (_("shift of 0 ignored.")); shift = & shift_names[0]; assert (shift->properties->index == SHIFT_LSL); } else { - inst.error = _("Invalid immediate shift"); + inst.error = _("invalid immediate shift"); return FAIL; } } @@ -3943,7 +4774,7 @@ data_op2 (str) if (expr.X_op != O_constant) { - inst.error = _("Constant expression expected"); + inst.error = _("constant expression expected"); return FAIL; } @@ -3952,7 +4783,7 @@ data_op2 (str) || (expr.X_add_number & 1) != 0 || ((unsigned) inst.reloc.exp.X_add_number) > 255) { - inst.error = _("Invalid constant"); + inst.error = _("invalid constant"); return FAIL; } inst.instruction |= INST_IMMEDIATE; @@ -3972,7 +4803,7 @@ data_op2 (str) inst.reloc.exp.X_add_number)) == FAIL) { - inst.error = _("Invalid constant"); + inst.error = _("invalid constant"); return FAIL; } } @@ -3985,7 +4816,7 @@ data_op2 (str) } (*str)++; - inst.error = _("Register or shift expression expected"); + inst.error = _("register or shift expression expected"); return FAIL; } } @@ -4038,19 +4869,18 @@ fp_op2 (str) return SUCCESS; } - inst.error = _("Invalid floating point immediate expression"); + inst.error = _("invalid floating point immediate expression"); return FAIL; } inst.error = - _("Floating point register or immediate expression expected"); + _("floating point register or immediate expression expected"); return FAIL; } } static void -do_arit (str, flags) +do_arit (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -4065,15 +4895,13 @@ do_arit (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_adr (str, flags) +do_adr (str) char * str; - unsigned long flags; { /* This is a pseudo-op of the form "adr rd, label" to be converted into a relative address of the form "add rd, pc, #label-.-8". */ @@ -4093,49 +4921,45 @@ do_adr (str, flags) inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE; inst.reloc.exp.X_add_number -= 8; /* PC relative adjust. */ inst.reloc.pc_rel = 1; - inst.instruction |= flags; end_of_line (str); } static void -do_adrl (str, flags) +do_adrl (str) char * str; - unsigned long flags; { /* This is a pseudo-op of the form "adrl rd, label" to be converted into a relative address of the form: - add rd, pc, #low(label-.-8)" - add rd, rd, #high(label-.-8)" */ + add rd, pc, #low(label-.-8)" + add rd, rd, #high(label-.-8)" */ skip_whitespace (str); - if (reg_required_here (& str, 12) == FAIL - || skip_past_comma (& str) == FAIL - || my_get_expression (& inst.reloc.exp, & str)) + if (reg_required_here (&str, 12) == FAIL + || skip_past_comma (&str) == FAIL + || my_get_expression (&inst.reloc.exp, &str)) { if (!inst.error) inst.error = BAD_ARGS; + return; } end_of_line (str); - /* Frag hacking will turn this into a sub instruction if the offset turns out to be negative. */ inst.reloc.type = BFD_RELOC_ARM_ADRL_IMMEDIATE; inst.reloc.exp.X_add_number -= 8; /* PC relative adjust */ inst.reloc.pc_rel = 1; - inst.instruction |= flags; inst.size = INSN_SIZE * 2; return; } static void -do_cmp (str, flags) +do_cmp (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -4154,18 +4978,13 @@ do_cmp (str, flags) return; } - inst.instruction |= flags; - if ((flags & 0x0000f000) == 0) - inst.instruction |= CONDS_BIT; - end_of_line (str); return; } static void -do_mov (str, flags) +do_mov (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -4184,15 +5003,13 @@ do_mov (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static int -ldst_extend (str, hwse) +ldst_extend (str) char ** str; - int hwse; { int add = INDEX_UP; @@ -4208,8 +5025,7 @@ ldst_extend (str, hwse) { int value = inst.reloc.exp.X_add_number; - if ((hwse && (value < -255 || value > 255)) - || (value < -4095 || value > 4095)) + if (value < -4095 || value > 4095) { inst.error = _("address offset too large"); return FAIL; @@ -4221,23 +5037,11 @@ ldst_extend (str, hwse) add = 0; } - /* Halfword and signextension instructions have the - immediate value split across bits 11..8 and bits 3..0. */ - if (hwse) - inst.instruction |= (add | HWOFFSET_IMM - | ((value >> 4) << 8) | (value & 0xF)); - else - inst.instruction |= add | value; + inst.instruction |= add | value; } else { - if (hwse) - { - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; - } - else - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; inst.reloc.pc_rel = 0; } return SUCCESS; @@ -4254,49 +5058,353 @@ ldst_extend (str, hwse) if (reg_required_here (str, 0) == FAIL) return FAIL; - if (hwse) - inst.instruction |= add; - else - { - inst.instruction |= add | OFFSET_REG; - if (skip_past_comma (str) == SUCCESS) - return decode_shift (str, SHIFT_RESTRICT); - } + inst.instruction |= add | OFFSET_REG; + if (skip_past_comma (str) == SUCCESS) + return decode_shift (str, SHIFT_RESTRICT); return SUCCESS; } } static void -do_ldst (str, flags) +do_ldst (str) char * str; - unsigned long flags; { - int halfword = 0; int pre_inc = 0; int conflict_reg; int value; - /* This is not ideal, but it is the simplest way of dealing with the - ARM7T halfword instructions (since they use a different - encoding, but the same mnemonic): */ - halfword = (flags & 0x80000000) != 0; - if (halfword) + skip_whitespace (str); + + if ((conflict_reg = reg_required_here (&str, 12)) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL) + { + inst.error = _("address expected"); + return; + } + + if (*str == '[') { - /* This is actually a load/store of a halfword, or a - signed-extension load. */ - if ((cpu_variant & ARM_EXT_HALFWORD) == 0) + int reg; + + str++; + + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 16)) == FAIL) + return; + + /* Conflicts can occur on stores as well as loads. */ + conflict_reg = (conflict_reg == reg); + + skip_whitespace (str); + + if (*str == ']') { - inst.error - = _("Processor does not support halfwords or signed bytes"); + str ++; + + if (skip_past_comma (&str) == SUCCESS) + { + /* [Rn],... (post inc) */ + if (ldst_extend (&str) == FAIL) + return; + if (conflict_reg) + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); + } + else + { + /* [Rn] */ + skip_whitespace (str); + + if (*str == '!') + { + if (conflict_reg) + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); + str++; + inst.instruction |= WRITE_BACK; + } + + inst.instruction |= INDEX_UP; + pre_inc = 1; + } + } + else + { + /* [Rn,...] */ + if (skip_past_comma (&str) == FAIL) + { + inst.error = _("pre-indexed expression expected"); + return; + } + + pre_inc = 1; + if (ldst_extend (&str) == FAIL) + return; + + skip_whitespace (str); + + if (*str++ != ']') + { + inst.error = _("missing ]"); + return; + } + + skip_whitespace (str); + + if (*str == '!') + { + if (conflict_reg) + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); + str++; + inst.instruction |= WRITE_BACK; + } + } + } + else if (*str == '=') + { + if ((inst.instruction & LOAD_BIT) == 0) + { + inst.error = _("invalid pseudo operation"); + return; + } + + /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ + str++; + + skip_whitespace (str); + + if (my_get_expression (&inst.reloc.exp, &str)) + return; + + if (inst.reloc.exp.X_op != O_constant + && inst.reloc.exp.X_op != O_symbol) + { + inst.error = _("constant expression expected"); + return; + } + + if (inst.reloc.exp.X_op == O_constant) + { + value = validate_immediate (inst.reloc.exp.X_add_number); + + if (value != FAIL) + { + /* This can be done with a mov instruction. */ + inst.instruction &= LITERAL_MASK; + inst.instruction |= (INST_IMMEDIATE + | (OPCODE_MOV << DATA_OP_SHIFT)); + inst.instruction |= value & 0xfff; + end_of_line (str); + return; + } + + value = validate_immediate (~inst.reloc.exp.X_add_number); + + if (value != FAIL) + { + /* This can be done with a mvn instruction. */ + inst.instruction &= LITERAL_MASK; + inst.instruction |= (INST_IMMEDIATE + | (OPCODE_MVN << DATA_OP_SHIFT)); + inst.instruction |= value & 0xfff; + end_of_line (str); + return; + } + } + + /* Insert into literal pool. */ + if (add_to_lit_pool () == FAIL) + { + if (!inst.error) + inst.error = _("literal pool insertion failed"); + return; + } + + /* Change the instruction exp to point to the pool. */ + inst.reloc.type = BFD_RELOC_ARM_LITERAL; + inst.reloc.pc_rel = 1; + inst.instruction |= (REG_PC << 16); + pre_inc = 1; + } + else + { + if (my_get_expression (&inst.reloc.exp, &str)) + return; + + inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; +#ifndef TE_WINCE + /* PC rel adjust. */ + inst.reloc.exp.X_add_number -= 8; +#endif + inst.reloc.pc_rel = 1; + inst.instruction |= (REG_PC << 16); + pre_inc = 1; + } + + inst.instruction |= (pre_inc ? PRE_INDEX : 0); + end_of_line (str); + return; +} + +static void +do_ldstt (str) + char * str; +{ + int conflict_reg; + + skip_whitespace (str); + + if ((conflict_reg = reg_required_here (& str, 12)) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (& str) == FAIL) + { + inst.error = _("address expected"); + return; + } + + if (*str == '[') + { + int reg; + + str++; + + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 16)) == FAIL) + return; + + /* ldrt/strt always use post-indexed addressing, so if the base is + the same as Rd, we warn. */ + if (conflict_reg == reg) + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); + + skip_whitespace (str); + + if (*str == ']') + { + str ++; + + if (skip_past_comma (&str) == SUCCESS) + { + /* [Rn],... (post inc) */ + if (ldst_extend (&str) == FAIL) + return; + } + else + { + /* [Rn] */ + skip_whitespace (str); + + /* Skip a write-back '!'. */ + if (*str == '!') + str++; + + inst.instruction |= INDEX_UP; + } + } + else + { + inst.error = _("post-indexed expression expected"); return; } + } + else + { + inst.error = _("post-indexed expression expected"); + return; + } + + end_of_line (str); + return; +} + +static int +ldst_extend_v4 (str) + char ** str; +{ + int add = INDEX_UP; + + switch (**str) + { + case '#': + case '$': + (*str)++; + if (my_get_expression (& inst.reloc.exp, str)) + return FAIL; + + if (inst.reloc.exp.X_op == O_constant) + { + int value = inst.reloc.exp.X_add_number; + + if (value < -255 || value > 255) + { + inst.error = _("address offset too large"); + return FAIL; + } + + if (value < 0) + { + value = -value; + add = 0; + } + + /* Halfword and signextension instructions have the + immediate value split across bits 11..8 and bits 3..0. */ + inst.instruction |= (add | HWOFFSET_IMM + | ((value >> 4) << 8) | (value & 0xF)); + } + else + { + inst.instruction |= HWOFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; + inst.reloc.pc_rel = 0; + } + return SUCCESS; - inst.instruction = ((inst.instruction & COND_MASK) - | (flags & ~COND_MASK)); + case '-': + add = 0; + /* Fall through. */ - flags = 0; + case '+': + (*str)++; + /* Fall through. */ + + default: + if (reg_required_here (str, 0) == FAIL) + return FAIL; + + inst.instruction |= add; + return SUCCESS; } +} + +/* Halfword and signed-byte load/store operations. */ +static void +do_ldstv4 (str) + char * str; +{ + int pre_inc = 0; + int conflict_reg; + int value; skip_whitespace (str); @@ -4309,7 +5417,7 @@ do_ldst (str, flags) if (skip_past_comma (& str) == FAIL) { - inst.error = _("Address expected"); + inst.error = _("address expected"); return; } @@ -4336,25 +5444,17 @@ do_ldst (str, flags) if (skip_past_comma (&str) == SUCCESS) { /* [Rn],... (post inc) */ - if (ldst_extend (&str, halfword) == FAIL) + if (ldst_extend_v4 (&str) == FAIL) return; if (conflict_reg) - { - if (flags & TRANS_BIT) - as_warn (_("Rn and Rd must be different in %s"), - ((inst.instruction & LOAD_BIT) - ? "LDRT" : "STRT")); - else - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - } + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); } else { /* [Rn] */ - if (halfword) - inst.instruction |= HWOFFSET_IMM; + inst.instruction |= HWOFFSET_IMM; skip_whitespace (str); @@ -4368,16 +5468,8 @@ do_ldst (str, flags) inst.instruction |= WRITE_BACK; } - flags |= INDEX_UP; - if (flags & TRANS_BIT) - { - if (conflict_reg) - as_warn (_("Rn and Rd must be different in %s"), - ((inst.instruction & LOAD_BIT) - ? "LDRT" : "STRT")); - } - else - pre_inc = 1; + inst.instruction |= INDEX_UP; + pre_inc = 1; } } else @@ -4390,7 +5482,7 @@ do_ldst (str, flags) } pre_inc = 1; - if (ldst_extend (&str, halfword) == FAIL) + if (ldst_extend_v4 (&str) == FAIL) return; skip_whitespace (str); @@ -4416,6 +5508,13 @@ do_ldst (str, flags) } else if (*str == '=') { + if ((inst.instruction & LOAD_BIT) == 0) + { + inst.error = _("invalid pseudo operation"); + return; + } + + /* XXX Does this work correctly for half-word/byte ops? */ /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ str++; @@ -4427,7 +5526,7 @@ do_ldst (str, flags) if (inst.reloc.exp.X_op != O_constant && inst.reloc.exp.X_op != O_symbol) { - inst.error = _("Constant expression expected"); + inst.error = _("constant expression expected"); return; } @@ -4440,7 +5539,7 @@ do_ldst (str, flags) /* This can be done with a mov instruction. */ inst.instruction &= LITERAL_MASK; inst.instruction |= INST_IMMEDIATE | (OPCODE_MOV << DATA_OP_SHIFT); - inst.instruction |= (flags & COND_MASK) | (value & 0xfff); + inst.instruction |= value & 0xfff; end_of_line (str); return; } @@ -4452,7 +5551,7 @@ do_ldst (str, flags) /* This can be done with a mvn instruction. */ inst.instruction &= LITERAL_MASK; inst.instruction |= INST_IMMEDIATE | (OPCODE_MVN << DATA_OP_SHIFT); - inst.instruction |= (flags & COND_MASK) | (value & 0xfff); + inst.instruction |= value & 0xfff; end_of_line (str); return; } @@ -4467,13 +5566,8 @@ do_ldst (str, flags) } /* Change the instruction exp to point to the pool. */ - if (halfword) - { - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_HWLITERAL; - } - else - inst.reloc.type = BFD_RELOC_ARM_LITERAL; + inst.instruction |= HWOFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_HWLITERAL; inst.reloc.pc_rel = 1; inst.instruction |= (REG_PC << 16); pre_inc = 1; @@ -4483,13 +5577,8 @@ do_ldst (str, flags) if (my_get_expression (&inst.reloc.exp, &str)) return; - if (halfword) - { - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; - } - else - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; + inst.instruction |= HWOFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; #ifndef TE_WINCE /* PC rel adjust. */ inst.reloc.exp.X_add_number -= 8; @@ -4499,10 +5588,7 @@ do_ldst (str, flags) pre_inc = 1; } - if (pre_inc && (flags & TRANS_BIT)) - inst.error = _("Pre-increment instruction with translate"); - - inst.instruction |= flags | (pre_inc ? PRE_INDEX : 0); + inst.instruction |= (pre_inc ? PRE_INDEX : 0); end_of_line (str); return; } @@ -4541,7 +5627,7 @@ reg_list (strp) if (reg <= cur_reg) { - inst.error = _("Bad range in register list"); + inst.error = _("bad range in register list"); return FAIL; } @@ -4549,7 +5635,7 @@ reg_list (strp) { if (range & (1 << i)) as_tsktsk - (_("Warning: Duplicated register (r%d) in register list"), + (_("Warning: duplicated register (r%d) in register list"), i); else range |= 1 << i; @@ -4558,10 +5644,10 @@ reg_list (strp) } if (range & (1 << reg)) - as_tsktsk (_("Warning: Duplicated register (r%d) in register list"), + as_tsktsk (_("Warning: duplicated register (r%d) in register list"), reg); else if (reg <= cur_reg) - as_tsktsk (_("Warning: Register range not in ascending order")); + as_tsktsk (_("Warning: register range not in ascending order")); range |= 1 << reg; cur_reg = reg; @@ -4573,7 +5659,7 @@ reg_list (strp) if (*str++ != '}') { - inst.error = _("Missing `}'"); + inst.error = _("missing `}'"); return FAIL; } } @@ -4600,7 +5686,7 @@ reg_list (strp) regno &= -regno; regno = (1 << regno) - 1; as_tsktsk - (_("Warning: Duplicated register (r%d) in register list"), + (_("Warning: duplicated register (r%d) in register list"), regno); } @@ -4635,9 +5721,8 @@ reg_list (strp) } static void -do_ldmstm (str, flags) +do_ldmstm (str) char * str; - unsigned long flags; { int base_reg; long range; @@ -4657,7 +5742,7 @@ do_ldmstm (str, flags) if (*str == '!') { - flags |= WRITE_BACK; + inst.instruction |= WRITE_BACK; str++; } @@ -4672,18 +5757,17 @@ do_ldmstm (str, flags) if (*str == '^') { str++; - flags |= LDM_TYPE_2_OR_3; + inst.instruction |= LDM_TYPE_2_OR_3; } - inst.instruction |= flags | range; + inst.instruction |= range; end_of_line (str); return; } static void -do_swi (str, flags) +do_swi (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -4696,17 +5780,14 @@ do_swi (str, flags) inst.reloc.type = BFD_RELOC_ARM_SWI; inst.reloc.pc_rel = 0; - inst.instruction |= flags; - end_of_line (str); return; } static void -do_swap (str, flags) +do_swap (str) char * str; - unsigned long flags; { int reg; @@ -4761,15 +5842,13 @@ do_swap (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_branch (str, flags) +do_branch (str) char * str; - unsigned long flags ATTRIBUTE_UNUSED; { if (my_get_expression (&inst.reloc.exp, &str)) return; @@ -4813,9 +5892,8 @@ do_branch (str, flags) } static void -do_bx (str, flags) +do_bx (str) char * str; - unsigned long flags ATTRIBUTE_UNUSED; { int reg; @@ -4829,15 +5907,14 @@ do_bx (str, flags) /* Note - it is not illegal to do a "bx pc". Useless, but not illegal. */ if (reg == REG_PC) - as_tsktsk (_("Use of r15 in bx in ARM mode is not really useful")); + as_tsktsk (_("use of r15 in bx in ARM mode is not really useful")); end_of_line (str); } static void -do_cdp (str, flags) +do_cdp (str) char * str; - unsigned long flags ATTRIBUTE_UNUSED; { /* Co-processor data operation. Format: CDP{cond} CP#,<expr>,CRd,CRn,CRm{,<expr>} */ @@ -4897,9 +5974,8 @@ do_cdp (str, flags) } static void -do_lstc (str, flags) +do_lstc (str) char * str; - unsigned long flags; { /* Co-processor register load/store. Format: <LDC|STC{cond}[L] CP#,CRd,<address> */ @@ -4922,22 +5998,20 @@ do_lstc (str, flags) } if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str) == FAIL) + || cp_address_required_here (&str, CP_WB_OK) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_co_reg (str, flags) +do_co_reg (str) char * str; - unsigned long flags; { /* Co-processor register transfer. Format: <MCR|MRC>{cond} CP#,<expr1>,Rd,CRn,CRm{,<expr2>} */ @@ -4992,19 +6066,14 @@ do_co_reg (str, flags) return; } } - if (flags) - { - inst.error = BAD_COND; - } end_of_line (str); return; } static void -do_fp_ctrl (str, flags) +do_fpa_ctrl (str) char * str; - unsigned long flags ATTRIBUTE_UNUSED; { /* FP control registers. Format: <WFS|RFS|WFC|RFC>{cond} Rn */ @@ -5023,29 +6092,11 @@ do_fp_ctrl (str, flags) } static void -do_fp_ldst (str, flags) +do_fpa_ldst (str) char * str; - unsigned long flags ATTRIBUTE_UNUSED; { skip_whitespace (str); - switch (inst.suffix) - { - case SUFF_S: - break; - case SUFF_D: - inst.instruction |= CP_T_X; - break; - case SUFF_E: - inst.instruction |= CP_T_Y; - break; - case SUFF_P: - inst.instruction |= CP_T_X | CP_T_Y; - break; - default: - abort (); - } - if (fp_reg_required_here (&str, 12) == FAIL) { if (!inst.error) @@ -5054,7 +6105,7 @@ do_fp_ldst (str, flags) } if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str) == FAIL) + || cp_address_required_here (&str, CP_WB_OK) == FAIL) { if (!inst.error) inst.error = BAD_ARGS; @@ -5065,9 +6116,8 @@ do_fp_ldst (str, flags) } static void -do_fp_ldmstm (str, flags) +do_fpa_ldmstm (str) char * str; - unsigned long flags; { int num_regs; @@ -5091,7 +6141,7 @@ do_fp_ldmstm (str, flags) if (inst.reloc.exp.X_op != O_constant) { - inst.error = _("Constant value required for number of registers"); + inst.error = _("constant value required for number of registers"); return; } @@ -5120,7 +6170,7 @@ do_fp_ldmstm (str, flags) abort (); } - if (flags) + if (inst.instruction & (CP_T_Pre | CP_T_UD)) /* ea/fd format. */ { int reg; int write_back; @@ -5160,41 +6210,41 @@ do_fp_ldmstm (str, flags) if (reg == REG_PC) { inst.error = - _("R15 not allowed as base register with write-back"); + _("r15 not allowed as base register with write-back"); return; } } else write_back = 0; - if (flags & CP_T_Pre) + if (inst.instruction & CP_T_Pre) { /* Pre-decrement. */ offset = 3 * num_regs; if (write_back) - flags |= CP_T_WB; + inst.instruction |= CP_T_WB; } else { /* Post-increment. */ if (write_back) { - flags |= CP_T_WB; + inst.instruction |= CP_T_WB; offset = 3 * num_regs; } else { /* No write-back, so convert this into a standard pre-increment instruction -- aesthetically more pleasing. */ - flags = CP_T_Pre | CP_T_UD; + inst.instruction |= CP_T_Pre | CP_T_UD; offset = 0; } } - inst.instruction |= flags | offset; + inst.instruction |= offset; } else if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str) == FAIL) + || cp_address_required_here (&str, CP_WB_OK) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; @@ -5205,26 +6255,11 @@ do_fp_ldmstm (str, flags) } static void -do_fp_dyadic (str, flags) +do_fpa_dyadic (str) char * str; - unsigned long flags; { skip_whitespace (str); - switch (inst.suffix) - { - case SUFF_S: - break; - case SUFF_D: - inst.instruction |= 0x00000080; - break; - case SUFF_E: - inst.instruction |= 0x00080000; - break; - default: - abort (); - } - if (fp_reg_required_here (&str, 12) == FAIL) { if (! inst.error) @@ -5248,33 +6283,42 @@ do_fp_dyadic (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_fp_monadic (str, flags) +do_fpa_monadic (str) char * str; - unsigned long flags; { skip_whitespace (str); - switch (inst.suffix) + if (fp_reg_required_here (&str, 12) == FAIL) { - case SUFF_S: - break; - case SUFF_D: - inst.instruction |= 0x00000080; - break; - case SUFF_E: - inst.instruction |= 0x00080000; - break; - default: - abort (); + if (! inst.error) + inst.error = BAD_ARGS; + return; } - if (fp_reg_required_here (&str, 12) == FAIL) + if (skip_past_comma (&str) == FAIL + || fp_op2 (&str) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_fpa_cmp (str) + char * str; +{ + skip_whitespace (str); + + if (fp_reg_required_here (&str, 16) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; @@ -5289,15 +6333,13 @@ do_fp_monadic (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_fp_cmp (str, flags) +do_fpa_from_reg (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -5309,46 +6351,263 @@ do_fp_cmp (str, flags) } if (skip_past_comma (&str) == FAIL - || fp_op2 (&str) == FAIL) + || reg_required_here (&str, 12) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_fp_from_reg (str, flags) +do_fpa_to_reg (str) char * str; - unsigned long flags; { skip_whitespace (str); - switch (inst.suffix) + if (reg_required_here (&str, 12) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || fp_reg_required_here (&str, 0) == FAIL) { - case SUFF_S: - break; - case SUFF_D: - inst.instruction |= 0x00000080; - break; - case SUFF_E: - inst.instruction |= 0x00080000; - break; - default: - abort (); + if (! inst.error) + inst.error = BAD_ARGS; + return; } - if (fp_reg_required_here (&str, 16) == FAIL) + end_of_line (str); + return; +} + +static int +vfp_sp_reg_required_here (str, pos) + char **str; + enum vfp_sp_reg_pos pos; +{ + int reg; + char *start = *str; + + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_SN].htab)) != FAIL) + { + switch (pos) + { + case VFP_REG_Sd: + inst.instruction |= ((reg >> 1) << 12) | ((reg & 1) << 22); + break; + + case VFP_REG_Sn: + inst.instruction |= ((reg >> 1) << 16) | ((reg & 1) << 7); + break; + + case VFP_REG_Sm: + inst.instruction |= ((reg >> 1) << 0) | ((reg & 1) << 5); + break; + + default: + abort (); + } + return reg; + } + + /* In the few cases where we might be able to accept something else + this error can be overridden. */ + inst.error = _(all_reg_maps[REG_TYPE_SN].expected); + + /* Restore the start point. */ + *str = start; + return FAIL; +} + +static int +vfp_dp_reg_required_here (str, pos) + char **str; + enum vfp_sp_reg_pos pos; +{ + int reg; + char *start = *str; + + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_DN].htab)) != FAIL) + { + switch (pos) + { + case VFP_REG_Dd: + inst.instruction |= reg << 12; + break; + + case VFP_REG_Dn: + inst.instruction |= reg << 16; + break; + + case VFP_REG_Dm: + inst.instruction |= reg << 0; + break; + + default: + abort (); + } + return reg; + } + + /* In the few cases where we might be able to accept something else + this error can be overridden. */ + inst.error = _(all_reg_maps[REG_TYPE_DN].expected); + + /* Restore the start point. */ + *str = start; + return FAIL; +} + +static void +do_vfp_sp_monadic (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_dp_monadic (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_sp_dyadic (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL + || skip_past_comma (&str) == FAIL + || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_dp_dyadic (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL + || skip_past_comma (&str) == FAIL + || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_reg_from_sp (str) + char *str; +{ + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_vfp_sp_reg2 (str) + char *str; +{ + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || reg_required_here (&str, 16) == FAIL + || skip_past_comma (&str) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + /* We require exactly two consecutive SP registers. */ + if (vfp_sp_reg_list (&str, VFP_REG_Sm) != 2) + { + if (! inst.error) + inst.error = _("only two consecutive VFP SP registers allowed here"); + } + + end_of_line (str); + return; +} + +static void +do_vfp_sp_from_reg (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL) + return; + if (skip_past_comma (&str) == FAIL || reg_required_here (&str, 12) == FAIL) { @@ -5357,15 +6616,13 @@ do_fp_from_reg (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_fp_to_reg (str, flags) - char * str; - unsigned long flags; +do_vfp_reg_from_dp (str) + char *str; { skip_whitespace (str); @@ -5373,14 +6630,656 @@ do_fp_to_reg (str, flags) return; if (skip_past_comma (&str) == FAIL - || fp_reg_required_here (&str, 0) == FAIL) + || vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_reg2_from_dp (str) + char *str; +{ + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || reg_required_here (&str, 16) == FAIL + || skip_past_comma (&str) == FAIL + || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_dp_from_reg (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || reg_required_here (&str, 12) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_dp_from_reg2 (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || reg_required_here (&str, 12) == FAIL + || skip_past_comma (&str) == FAIL + || reg_required_here (&str, 16)) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static const struct vfp_reg * +vfp_psr_parse (str) + char **str; +{ + char *start = *str; + char c; + char *p; + const struct vfp_reg *vreg; + + p = start; + + /* Find the end of the current token. */ + do + { + c = *p++; + } + while (ISALPHA (c)); + + /* Mark it. */ + *--p = 0; + + for (vreg = vfp_regs + 0; + vreg < vfp_regs + sizeof (vfp_regs) / sizeof (struct vfp_reg); + vreg++) + { + if (strcmp (start, vreg->name) == 0) + { + *p = c; + *str = p; + return vreg; + } + } + + *p = c; + return NULL; +} + +static int +vfp_psr_required_here (str) + char **str; +{ + char *start = *str; + const struct vfp_reg *vreg; + + vreg = vfp_psr_parse (str); + + if (vreg) + { + inst.instruction |= vreg->regno; + return SUCCESS; + } + + inst.error = _("VFP system register expected"); + + *str = start; + return FAIL; +} + +static void +do_vfp_reg_from_ctrl (str) + char *str; +{ + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_psr_required_here (&str) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_ctrl_from_reg (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_psr_required_here (&str) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || reg_required_here (&str, 12) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_sp_ldst (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_address_required_here (&str, CP_NO_WB) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_dp_ldst (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_address_required_here (&str, CP_NO_WB) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +/* Parse and encode a VFP SP register list, storing the initial + register in position POS and returning the range as the result. If + the string is invalid return FAIL (an invalid range). */ +static long +vfp_sp_reg_list (str, pos) + char **str; + enum vfp_sp_reg_pos pos; +{ + long range = 0; + int base_reg = 0; + int new_base; + long base_bits = 0; + int count = 0; + long tempinst; + unsigned long mask = 0; + int warned = 0; + + if (**str != '{') + return FAIL; + + (*str)++; + skip_whitespace (*str); + + tempinst = inst.instruction; + + do + { + inst.instruction = 0; + + if ((new_base = vfp_sp_reg_required_here (str, pos)) == FAIL) + return FAIL; + + if (count == 0 || base_reg > new_base) + { + base_reg = new_base; + base_bits = inst.instruction; + } + + if (mask & (1 << new_base)) + { + inst.error = _("invalid register list"); + return FAIL; + } + + if ((mask >> new_base) != 0 && ! warned) + { + as_tsktsk (_("register list not in ascending order")); + warned = 1; + } + + mask |= 1 << new_base; + count++; + + skip_whitespace (*str); + + if (**str == '-') /* We have the start of a range expression */ + { + int high_range; + + (*str)++; + + if ((high_range + = arm_reg_parse (str, all_reg_maps[REG_TYPE_SN].htab)) + == FAIL) + { + inst.error = _(all_reg_maps[REG_TYPE_SN].expected); + return FAIL; + } + + if (high_range <= new_base) + { + inst.error = _("register range not in ascending order"); + return FAIL; + } + + for (new_base++; new_base <= high_range; new_base++) + { + if (mask & (1 << new_base)) + { + inst.error = _("invalid register list"); + return FAIL; + } + + mask |= 1 << new_base; + count++; + } + } + } + while (skip_past_comma (str) != FAIL); + + if (**str != '}') + { + inst.error = _("invalid register list"); + return FAIL; + } + + (*str)++; + + range = count; + + /* Sanity check -- should have raised a parse error above. */ + if (count == 0 || count > 32) + abort(); + + /* Final test -- the registers must be consecutive. */ + while (count--) + { + if ((mask & (1 << base_reg++)) == 0) + { + inst.error = _("non-contiguous register range"); + return FAIL; + } + } + + inst.instruction = tempinst | base_bits; + return range; +} + +static long +vfp_dp_reg_list (str) + char **str; +{ + long range = 0; + int base_reg = 0; + int new_base; + int count = 0; + long tempinst; + unsigned long mask = 0; + int warned = 0; + + if (**str != '{') + return FAIL; + + (*str)++; + skip_whitespace (*str); + + tempinst = inst.instruction; + + do + { + inst.instruction = 0; + + if ((new_base = vfp_dp_reg_required_here (str, VFP_REG_Dd)) == FAIL) + return FAIL; + + if (count == 0 || base_reg > new_base) + { + base_reg = new_base; + range = inst.instruction; + } + + if (mask & (1 << new_base)) + { + inst.error = _("invalid register list"); + return FAIL; + } + + if ((mask >> new_base) != 0 && ! warned) + { + as_tsktsk (_("register list not in ascending order")); + warned = 1; + } + + mask |= 1 << new_base; + count++; + + skip_whitespace (*str); + + if (**str == '-') /* We have the start of a range expression */ + { + int high_range; + + (*str)++; + + if ((high_range + = arm_reg_parse (str, all_reg_maps[REG_TYPE_DN].htab)) + == FAIL) + { + inst.error = _(all_reg_maps[REG_TYPE_DN].expected); + return FAIL; + } + + if (high_range <= new_base) + { + inst.error = _("register range not in ascending order"); + return FAIL; + } + + for (new_base++; new_base <= high_range; new_base++) + { + if (mask & (1 << new_base)) + { + inst.error = _("invalid register list"); + return FAIL; + } + + mask |= 1 << new_base; + count++; + } + } + } + while (skip_past_comma (str) != FAIL); + + if (**str != '}') + { + inst.error = _("invalid register list"); + return FAIL; + } + + (*str)++; + + range |= 2 * count; + + /* Sanity check -- should have raised a parse error above. */ + if (count == 0 || count > 16) + abort(); + + /* Final test -- the registers must be consecutive. */ + while (count--) + { + if ((mask & (1 << base_reg++)) == 0) + { + inst.error = _("non-contiguous register range"); + return FAIL; + } + } + + inst.instruction = tempinst; + return range; +} + +static void +vfp_sp_ldstm(str, ldstm_type) + char *str; + enum vfp_ldstm_type ldstm_type; +{ + long range; + + skip_whitespace (str); + + if (reg_required_here (&str, 16) == FAIL) + return; + + skip_whitespace (str); + + if (*str == '!') + { + inst.instruction |= WRITE_BACK; + str++; + } + else if (ldstm_type != VFP_LDSTMIA) + { + inst.error = _("this addressing mode requires base-register writeback"); + return; + } + + if (skip_past_comma (&str) == FAIL + || (range = vfp_sp_reg_list (&str, VFP_REG_Sd)) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + inst.instruction |= range; + end_of_line (str); +} + +static void +vfp_dp_ldstm(str, ldstm_type) + char *str; + enum vfp_ldstm_type ldstm_type; +{ + long range; + + skip_whitespace (str); + + if (reg_required_here (&str, 16) == FAIL) + return; + + skip_whitespace (str); + + if (*str == '!') + { + inst.instruction |= WRITE_BACK; + str++; + } + else if (ldstm_type != VFP_LDSTMIA && ldstm_type != VFP_LDSTMIAX) + { + inst.error = _("this addressing mode requires base-register writeback"); + return; + } + + if (skip_past_comma (&str) == FAIL + || (range = vfp_dp_reg_list (&str)) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (ldstm_type == VFP_LDSTMIAX || ldstm_type == VFP_LDSTMDBX) + range += 1; + + inst.instruction |= range; + end_of_line (str); +} + +static void +do_vfp_sp_ldstmia (str) + char *str; +{ + vfp_sp_ldstm (str, VFP_LDSTMIA); +} + +static void +do_vfp_sp_ldstmdb (str) + char *str; +{ + vfp_sp_ldstm (str, VFP_LDSTMDB); +} + +static void +do_vfp_dp_ldstmia (str) + char *str; +{ + vfp_dp_ldstm (str, VFP_LDSTMIA); +} + +static void +do_vfp_dp_ldstmdb (str) + char *str; +{ + vfp_dp_ldstm (str, VFP_LDSTMDB); +} + +static void +do_vfp_xp_ldstmia (str) + char *str; +{ + vfp_dp_ldstm (str, VFP_LDSTMIAX); +} + +static void +do_vfp_xp_ldstmdb (str) + char *str; +{ + vfp_dp_ldstm (str, VFP_LDSTMDBX); +} + +static void +do_vfp_sp_compare_z (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_dp_compare_z (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_dp_sp_cvt (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_vfp_sp_dp_cvt (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; end_of_line (str); return; } @@ -5687,7 +7586,7 @@ thumb_shift (str, shift) if (shift_value > 32 || (shift_value == 32 && shift == THUMB_LSL)) { - inst.error = _("Invalid immediate for shift"); + inst.error = _("invalid immediate for shift"); return; } @@ -5846,6 +7745,12 @@ thumb_load_store (str, load_store, size) } else if (*str == '=') { + if (load_store != THUMB_LOAD) + { + inst.error = _("invalid pseudo operation"); + return; + } + /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ str++; @@ -5911,12 +7816,12 @@ thumb_load_store (str, load_store, size) } else if (Rb == REG_PC && load_store != THUMB_LOAD) { - inst.error = _("R15 based store not allowed"); + inst.error = _("r15 based store not allowed"); return; } else if (Ro != FAIL) { - inst.error = _("Invalid base register for register offset"); + inst.error = _("invalid base register for register offset"); return; } @@ -5969,7 +7874,7 @@ thumb_load_store (str, load_store, size) if (offset & ~(0x1f << size)) { - inst.error = _("Invalid offset"); + inst.error = _("invalid offset"); return; } inst.instruction |= (offset >> size) << 6; @@ -5996,6 +7901,646 @@ thumb_load_store (str, load_store, size) end_of_line (str); } +/* A register must be given at this point. + + Shift is the place to put it in inst.instruction. + + Restores input start point on err. + Returns the reg#, or FAIL. */ + +static int +mav_reg_required_here (str, shift, regtype) + char ** str; + int shift; + enum arm_reg_type regtype; +{ + int reg; + char *start = *str; + + if ((reg = arm_reg_parse (str, all_reg_maps[regtype].htab)) != FAIL) + { + if (shift >= 0) + inst.instruction |= reg << shift; + + return reg; + } + + /* Restore the start point. */ + *str = start; + + /* In the few cases where we might be able to accept something else + this error can be overridden. */ + inst.error = _(all_reg_maps[regtype].expected); + + return FAIL; +} + +/* Cirrus Maverick Instructions. */ + +/* Wrapper functions. */ + +static void +do_mav_binops_1a (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVF); +} + +static void +do_mav_binops_1b (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVD); +} + +static void +do_mav_binops_1c (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVDX); +} + +static void +do_mav_binops_1d (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVF); +} + +static void +do_mav_binops_1e (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVD); +} + +static void +do_mav_binops_1f (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVF); +} + +static void +do_mav_binops_1g (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVD); +} + +static void +do_mav_binops_1h (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVFX); +} + +static void +do_mav_binops_1i (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVFX); +} + +static void +do_mav_binops_1j (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVDX); +} + +static void +do_mav_binops_1k (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVDX); +} + +static void +do_mav_binops_1l (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVF); +} + +static void +do_mav_binops_1m (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVD); +} + +static void +do_mav_binops_1n (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVFX); +} + +static void +do_mav_binops_1o (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVDX, REG_TYPE_MVDX); +} + +static void +do_mav_binops_2a (str) + char * str; +{ + do_mav_binops (str, MAV_MODE2, REG_TYPE_MVF, REG_TYPE_RN); +} + +static void +do_mav_binops_2b (str) + char * str; +{ + do_mav_binops (str, MAV_MODE2, REG_TYPE_MVD, REG_TYPE_RN); +} + +static void +do_mav_binops_2c (str) + char * str; +{ + do_mav_binops (str, MAV_MODE2, REG_TYPE_MVDX, REG_TYPE_RN); +} + +static void +do_mav_binops_3a (str) + char * str; +{ + do_mav_binops (str, MAV_MODE3, REG_TYPE_MVAX, REG_TYPE_MVFX); +} + +static void +do_mav_binops_3b (str) + char * str; +{ + do_mav_binops (str, MAV_MODE3, REG_TYPE_MVFX, REG_TYPE_MVAX); +} + +static void +do_mav_binops_3c (str) + char * str; +{ + do_mav_binops (str, MAV_MODE3, REG_TYPE_MVAX, REG_TYPE_MVDX); +} + +static void +do_mav_binops_3d (str) + char * str; +{ + do_mav_binops (str, MAV_MODE3, REG_TYPE_MVDX, REG_TYPE_MVAX); +} + +static void +do_mav_triple_4a (str) + char * str; +{ + do_mav_triple (str, MAV_MODE4, REG_TYPE_MVFX, REG_TYPE_MVFX, REG_TYPE_RN); +} + +static void +do_mav_triple_4b (str) + char * str; +{ + do_mav_triple (str, MAV_MODE4, REG_TYPE_MVDX, REG_TYPE_MVDX, REG_TYPE_RN); +} + +static void +do_mav_triple_5a (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVF, REG_TYPE_MVF); +} + +static void +do_mav_triple_5b (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVD, REG_TYPE_MVD); +} + +static void +do_mav_triple_5c (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVFX, REG_TYPE_MVFX); +} + +static void +do_mav_triple_5d (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVDX, REG_TYPE_MVDX); +} + +static void +do_mav_triple_5e (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_MVF, REG_TYPE_MVF, REG_TYPE_MVF); +} + +static void +do_mav_triple_5f (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_MVD, REG_TYPE_MVD, REG_TYPE_MVD); +} + +static void +do_mav_triple_5g (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_MVFX, REG_TYPE_MVFX, REG_TYPE_MVFX); +} + +static void +do_mav_triple_5h (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_MVDX, REG_TYPE_MVDX, REG_TYPE_MVDX); +} + +static void +do_mav_quad_6a (str) + char * str; +{ + do_mav_quad (str, MAV_MODE6, REG_TYPE_MVAX, REG_TYPE_MVFX, REG_TYPE_MVFX, + REG_TYPE_MVFX); +} + +static void +do_mav_quad_6b (str) + char * str; +{ + do_mav_quad (str, MAV_MODE6, REG_TYPE_MVAX, REG_TYPE_MVAX, REG_TYPE_MVFX, + REG_TYPE_MVFX); +} + +/* cfmvsc32<cond> DSPSC,MVFX[15:0]. */ +static void +do_mav_dspsc_1 (str) + char * str; +{ + skip_whitespace (str); + + /* cfmvsc32. */ + if (mav_reg_required_here (&str, -1, REG_TYPE_DSPSC) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, 16, REG_TYPE_MVFX) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + + return; + } + + end_of_line (str); +} + +/* cfmv32sc<cond> MVFX[15:0],DSPSC. */ +static void +do_mav_dspsc_2 (str) + char * str; +{ + skip_whitespace (str); + + /* cfmv32sc. */ + if (mav_reg_required_here (&str, 0, REG_TYPE_MVFX) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, -1, REG_TYPE_DSPSC) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + + return; + } + + end_of_line (str); +} + +static void +do_mav_shift_1 (str) + char * str; +{ + do_mav_shift (str, REG_TYPE_MVFX, REG_TYPE_MVFX); +} + +static void +do_mav_shift_2 (str) + char * str; +{ + do_mav_shift (str, REG_TYPE_MVDX, REG_TYPE_MVDX); +} + +static void +do_mav_ldst_1 (str) + char * str; +{ + do_mav_ldst (str, REG_TYPE_MVF); +} + +static void +do_mav_ldst_2 (str) + char * str; +{ + do_mav_ldst (str, REG_TYPE_MVD); +} + +static void +do_mav_ldst_3 (str) + char * str; +{ + do_mav_ldst (str, REG_TYPE_MVFX); +} + +static void +do_mav_ldst_4 (str) + char * str; +{ + do_mav_ldst (str, REG_TYPE_MVDX); +} + +/* Isnsn like "foo X,Y". */ + +static void +do_mav_binops (str, mode, reg0, reg1) + char * str; + int mode; + enum arm_reg_type reg0; + enum arm_reg_type reg1; +{ + int shift0, shift1; + + shift0 = mode & 0xff; + shift1 = (mode >> 8) & 0xff; + + skip_whitespace (str); + + if (mav_reg_required_here (&str, shift0, reg0) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, shift1, reg1) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + } + else + end_of_line (str); +} + +/* Isnsn like "foo X,Y,Z". */ + +static void +do_mav_triple (str, mode, reg0, reg1, reg2) + char * str; + int mode; + enum arm_reg_type reg0; + enum arm_reg_type reg1; + enum arm_reg_type reg2; +{ + int shift0, shift1, shift2; + + shift0 = mode & 0xff; + shift1 = (mode >> 8) & 0xff; + shift2 = (mode >> 16) & 0xff; + + skip_whitespace (str); + + if (mav_reg_required_here (&str, shift0, reg0) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, shift1, reg1) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, shift2, reg2) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + } + else + end_of_line (str); +} + +/* Isnsn like "foo W,X,Y,Z". + where W=MVAX[0:3] and X,Y,Z=MVFX[0:15]. */ + +static void +do_mav_quad (str, mode, reg0, reg1, reg2, reg3) + char * str; + int mode; + enum arm_reg_type reg0; + enum arm_reg_type reg1; + enum arm_reg_type reg2; + enum arm_reg_type reg3; +{ + int shift0, shift1, shift2, shift3; + + shift0= mode & 0xff; + shift1 = (mode >> 8) & 0xff; + shift2 = (mode >> 16) & 0xff; + shift3 = (mode >> 24) & 0xff; + + skip_whitespace (str); + + if (mav_reg_required_here (&str, shift0, reg0) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, shift1, reg1) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, shift2, reg2) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, shift3, reg3) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + } + else + end_of_line (str); +} + +/* Maverick shift immediate instructions. + cfsh32<cond> MVFX[15:0],MVFX[15:0],Shift[6:0]. + cfsh64<cond> MVDX[15:0],MVDX[15:0],Shift[6:0]. */ + +static void +do_mav_shift (str, reg0, reg1) + char * str; + enum arm_reg_type reg0; + enum arm_reg_type reg1; +{ + int error; + int imm, neg = 0; + + skip_whitespace (str); + + error = 0; + + if (mav_reg_required_here (&str, 12, reg0) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, 16, reg1) == FAIL + || skip_past_comma (&str) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + /* Calculate the immediate operand. + The operand is a 7bit signed number. */ + skip_whitespace (str); + + if (*str == '#') + ++str; + + if (!ISDIGIT (*str) && *str != '-') + { + inst.error = _("expecting immediate, 7bit operand"); + return; + } + + if (*str == '-') + { + neg = 1; + ++str; + } + + for (imm = 0; *str && ISDIGIT (*str); ++str) + imm = imm * 10 + *str - '0'; + + if (imm > 64) + { + inst.error = _("immediate out of range"); + return; + } + + /* Make negative imm's into 7bit signed numbers. */ + if (neg) + { + imm = -imm; + imm &= 0x0000007f; + } + + /* Bits 0-3 of the insn should have bits 0-3 of the immediate. + Bits 5-7 of the insn should have bits 4-6 of the immediate. + Bit 4 should be 0. */ + imm = (imm & 0xf) | ((imm & 0x70) << 1); + + inst.instruction |= imm; + end_of_line (str); +} + +static int +mav_parse_offset (str, negative) + char ** str; + int *negative; +{ + char * p = *str; + int offset; + + *negative = 0; + + skip_whitespace (p); + + if (*p == '#') + ++p; + + if (*p == '-') + { + *negative = 1; + ++p; + } + + if (!ISDIGIT (*p)) + { + inst.error = _("offset expected"); + return 0; + } + + for (offset = 0; *p && ISDIGIT (*p); ++p) + offset = offset * 10 + *p - '0'; + + if (offset > 0xff) + { + inst.error = _("offset out of range"); + return 0; + } + + *str = p; + + return *negative ? -offset : offset; +} + +/* Maverick load/store instructions. + <insn><cond> CRd,[Rn,<offset>]{!}. + <insn><cond> CRd,[Rn],<offset>. */ + +static void +do_mav_ldst (str, reg0) + char * str; + enum arm_reg_type reg0; +{ + int offset, negative; + + skip_whitespace (str); + + if (mav_reg_required_here (&str, 12, reg0) == FAIL + || skip_past_comma (&str) == FAIL + || *str++ != '[' + || reg_required_here (&str, 16) == FAIL) + goto fail_ldst; + + if (skip_past_comma (&str) == SUCCESS) + { + /* You are here: "<offset>]{!}". */ + inst.instruction |= PRE_INDEX; + + offset = mav_parse_offset (&str, &negative); + + if (inst.error) + return; + + if (*str++ != ']') + { + inst.error = _("missing ]"); + return; + } + + if (*str == '!') + { + inst.instruction |= WRITE_BACK; + ++str; + } + } + else + { + /* You are here: "], <offset>". */ + if (*str++ != ']') + { + inst.error = _("missing ]"); + return; + } + + if (skip_past_comma (&str) == FAIL + || (offset = mav_parse_offset (&str, &negative), inst.error)) + goto fail_ldst; + + inst.instruction |= CP_T_WB; /* Post indexed, set bit W. */ + } + + if (negative) + offset = -offset; + else + inst.instruction |= CP_T_UD; /* Postive, so set bit U. */ + + inst.instruction |= offset >> 2; + end_of_line (str); + return; + +fail_ldst: + if (!inst.error) + inst.error = BAD_ARGS; + return; +} + static void do_t_nop (str) char * str; @@ -6196,7 +8741,7 @@ do_t_ldmstm (str) return; if (*str != '!') - as_warn (_("Inserted missing '!': load/store multiple always writes back base register")); + as_warn (_("inserted missing '!': load/store multiple always writes back base register")); else str++; @@ -6212,7 +8757,7 @@ do_t_ldmstm (str) { /* This really doesn't seem worth it. */ inst.reloc.type = BFD_RELOC_NONE; - inst.error = _("Expression too complex"); + inst.error = _("expression too complex"); return; } @@ -6264,7 +8809,7 @@ do_t_lds (str) || *str++ != ']') { if (! inst.error) - inst.error = _("Syntax: ldrs[b] Rd, [Rb, Ro]"); + inst.error = _("syntax: ldrs[b] Rd, [Rb, Ro]"); return; } @@ -6312,7 +8857,7 @@ do_t_push_pop (str) { /* This really doesn't seem worth it. */ inst.reloc.type = BFD_RELOC_NONE; - inst.error = _("Expression too complex"); + inst.error = _("expression too complex"); return; } @@ -6409,10 +8954,11 @@ do_t_adr (str) } static void -insert_reg (entry) - int entry; +insert_reg (r, htab) + const struct reg_entry *r; + struct hash_control *htab; { - int len = strlen (reg_table[entry].name) + 2; + int len = strlen (r->name) + 2; char * buf = (char *) xmalloc (len); char * buf2 = (char *) xmalloc (len); int i = 0; @@ -6421,21 +8967,35 @@ insert_reg (entry) buf[i++] = REGISTER_PREFIX; #endif - strcpy (buf + i, reg_table[entry].name); + strcpy (buf + i, r->name); for (i = 0; buf[i]; i++) - buf2[i] = islower (buf[i]) ? toupper (buf[i]) : buf[i]; + buf2[i] = TOUPPER (buf[i]); buf2[i] = '\0'; - hash_insert (arm_reg_hsh, buf, (PTR) & reg_table[entry]); - hash_insert (arm_reg_hsh, buf2, (PTR) & reg_table[entry]); + hash_insert (htab, buf, (PTR) r); + hash_insert (htab, buf2, (PTR) r); +} + +static void +build_reg_hsh (map) + struct reg_map *map; +{ + const struct reg_entry *r; + + if ((map->htab = hash_new ()) == NULL) + as_fatal (_("virtual memory exhausted")); + + for (r = map->names; r->name != NULL; r++) + insert_reg (r, map->htab); } static void -insert_reg_alias (str, regnum) +insert_reg_alias (str, regnum, htab) char *str; int regnum; + struct hash_control *htab; { struct reg_entry *new = (struct reg_entry *) xmalloc (sizeof (struct reg_entry)); @@ -6445,9 +9005,95 @@ insert_reg_alias (str, regnum) new->name = name; new->number = regnum; - hash_insert (arm_reg_hsh, name, (PTR) new); + hash_insert (htab, name, (PTR) new); } +/* Look for the .req directive. This is of the form: + + newname .req existing_name + + If we find one, or if it looks sufficiently like one that we want to + handle any error here, return non-zero. Otherwise return zero. */ +static int +create_register_alias (newname, p) + char *newname; + char *p; +{ + char *q; + char c; + + q = p; + skip_whitespace (q); + + c = *p; + *p = '\0'; + + if (*q && !strncmp (q, ".req ", 5)) + { + char *copy_of_str; + char *r; + +#ifdef IGNORE_OPCODE_CASE + newname = original_case_string; +#endif + copy_of_str = newname; + + q += 4; + skip_whitespace (q); + + for (r = q; *r != '\0'; r++) + if (*r == ' ') + break; + + if (r != q) + { + enum arm_reg_type new_type, old_type; + int old_regno; + char d = *r; + + *r = '\0'; + old_type = arm_reg_parse_any (q); + *r = d; + + new_type = arm_reg_parse_any (newname); + + if (new_type == REG_TYPE_MAX) + { + if (old_type != REG_TYPE_MAX) + { + old_regno = arm_reg_parse (&q, all_reg_maps[old_type].htab); + insert_reg_alias (newname, old_regno, + all_reg_maps[old_type].htab); + } + else + as_warn (_("register '%s' does not exist\n"), q); + } + else if (old_type == REG_TYPE_MAX) + { + as_warn (_("ignoring redefinition of register alias '%s' to non-existant register '%s'"), + copy_of_str, q); + } + else + { + /* Do not warn about redefinitions to the same alias. */ + if (new_type != old_type + || (arm_reg_parse (&q, all_reg_maps[old_type].htab) + != arm_reg_parse (&q, all_reg_maps[new_type].htab))) + as_warn (_("ignoring redefinition of register alias '%s'"), + copy_of_str); + + } + } + else + as_warn (_("ignoring incomplete .req pseuso op")); + + *p = c; + return 1; + } + *p = c; + return 0; +} + static void set_constant_flonums () { @@ -6458,6 +9104,54 @@ set_constant_flonums () abort (); } +/* Iterate over the base tables to create the instruction patterns. */ +static void +build_arm_ops_hsh () +{ + unsigned int i; + unsigned int j; + static struct obstack insn_obstack; + + obstack_begin (&insn_obstack, 4000); + + for (i = 0; i < sizeof (insns) / sizeof (struct asm_opcode); i++) + { + const struct asm_opcode *insn = insns + i; + + if (insn->cond_offset != 0) + { + /* Insn supports conditional execution. Build the varaints + and insert them in the hash table. */ + for (j = 0; j < sizeof (conds) / sizeof (struct asm_cond); j++) + { + unsigned len = strlen (insn->template); + struct asm_opcode *new; + char *template; + + new = obstack_alloc (&insn_obstack, sizeof (struct asm_opcode)); + /* All condition codes are two characters. */ + template = obstack_alloc (&insn_obstack, len + 3); + + strncpy (template, insn->template, insn->cond_offset); + strcpy (template + insn->cond_offset, conds[j].template); + if (len > insn->cond_offset) + strcpy (template + insn->cond_offset + 2, + insn->template + insn->cond_offset); + new->template = template; + new->cond_offset = 0; + new->variant = insn->variant; + new->parms = insn->parms; + new->value = (insn->value & ~COND_MASK) | conds[j].value; + + hash_insert (arm_ops_hsh, new->template, (PTR) new); + } + } + /* Finally, insert the unconditional insn in the table directly; + no need to build a copy. */ + hash_insert (arm_ops_hsh, insn->template, (PTR) insn); + } +} + void md_begin () { @@ -6468,12 +9162,10 @@ md_begin () || (arm_tops_hsh = hash_new ()) == NULL || (arm_cond_hsh = hash_new ()) == NULL || (arm_shift_hsh = hash_new ()) == NULL - || (arm_reg_hsh = hash_new ()) == NULL || (arm_psr_hsh = hash_new ()) == NULL) - as_fatal (_("Virtual memory exhausted")); + as_fatal (_("virtual memory exhausted")); - for (i = 0; i < sizeof (insns) / sizeof (struct asm_opcode); i++) - hash_insert (arm_ops_hsh, insns[i].template, (PTR) (insns + i)); + build_arm_ops_hsh (); for (i = 0; i < sizeof (tinsns) / sizeof (struct thumb_opcode); i++) hash_insert (arm_tops_hsh, tinsns[i].template, (PTR) (tinsns + i)); for (i = 0; i < sizeof (conds) / sizeof (struct asm_cond); i++) @@ -6483,11 +9175,55 @@ md_begin () for (i = 0; i < sizeof (psrs) / sizeof (struct asm_psr); i++) hash_insert (arm_psr_hsh, psrs[i].template, (PTR) (psrs + i)); - for (i = 0; reg_table[i].name; i++) - insert_reg (i); + for (i = (int) REG_TYPE_FIRST; i < (int) REG_TYPE_MAX; i++) + build_reg_hsh (all_reg_maps + i); set_constant_flonums (); + /* Set the cpu variant based on the command-line options. We prefer + -mcpu= over -march= if both are set (as for GCC); and we prefer + -mfpu= over any other way of setting the floating point unit. + Use of legacy options with new options are faulted. */ + if (legacy_cpu != -1) + { + if (mcpu_cpu_opt != -1 || march_cpu_opt != -1) + as_bad (_("use of old and new-style options to set CPU type")); + + mcpu_cpu_opt = legacy_cpu; + } + else if (mcpu_cpu_opt == -1) + mcpu_cpu_opt = march_cpu_opt; + + if (legacy_fpu != -1) + { + if (mfpu_opt != -1) + as_bad (_("use of old and new-style options to set FPU type")); + + mfpu_opt = legacy_fpu; + } + else if (mfpu_opt == -1) + { + if (mcpu_fpu_opt != -1) + mfpu_opt = mcpu_fpu_opt; + else + mfpu_opt = march_fpu_opt; + } + + if (mfpu_opt == -1) + { + if (mcpu_cpu_opt == -1) + mfpu_opt = FPU_DEFAULT; + else if (mcpu_cpu_opt & ARM_EXT_V5) + mfpu_opt = FPU_ARCH_VFP_V2; + else + mfpu_opt = FPU_ARCH_FPA; + } + + if (mcpu_cpu_opt == -1) + mcpu_cpu_opt = CPU_DEFAULT; + + cpu_variant = mcpu_cpu_opt | mfpu_opt; + #if defined OBJ_COFF || defined OBJ_ELF { unsigned int flags = 0; @@ -6497,7 +9233,12 @@ md_begin () if (support_interwork) flags |= F_INTERWORK; if (uses_apcs_float) flags |= F_APCS_FLOAT; if (pic_code) flags |= F_PIC; - if ((cpu_variant & FPU_ALL) == FPU_NONE) flags |= F_SOFT_FLOAT; + if ((cpu_variant & FPU_ANY) == FPU_NONE + || (cpu_variant & FPU_ANY) == FPU_ARCH_VFP) /* VFP layout only. */ + flags |= F_SOFT_FLOAT; + /* Using VFP conventions (even if soft-float). */ + if (cpu_variant & FPU_VFP_EXT_NONE) flags |= F_VFP_FLOAT; + bfd_set_private_flags (stdoutput, flags); @@ -6532,36 +9273,35 @@ md_begin () mach = bfd_mach_arm_2a; break; - default: - case ARM_6 | ARM_3 | ARM_2: /* Actually no CPU type defined. */ - mach = bfd_mach_arm_4; + case ARM_6: /* Also ARM_7. */ + mach = bfd_mach_arm_3; break; - case ARM_7: /* Also ARM_6. */ - mach = bfd_mach_arm_3; + default: + mach = bfd_mach_arm_4; break; } /* Catch special cases. */ - if (cpu_variant & ARM_EXT_XSCALE) + if (cpu_variant & ARM_CEXT_XSCALE) mach = bfd_mach_arm_XScale; else if (cpu_variant & ARM_EXT_V5E) mach = bfd_mach_arm_5TE; else if (cpu_variant & ARM_EXT_V5) { - if (cpu_variant & ARM_EXT_THUMB) + if (cpu_variant & ARM_EXT_V4T) mach = bfd_mach_arm_5T; else mach = bfd_mach_arm_5; } - else if (cpu_variant & ARM_EXT_HALFWORD) + else if (cpu_variant & ARM_EXT_V4) { - if (cpu_variant & ARM_EXT_THUMB) + if (cpu_variant & ARM_EXT_V4T) mach = bfd_mach_arm_4T; else mach = bfd_mach_arm_4; } - else if (cpu_variant & ARM_EXT_LONGMUL) + else if (cpu_variant & ARM_EXT_V3M) mach = bfd_mach_arm_3M; bfd_set_arch_mach (stdoutput, TARGET_ARCH, mach); @@ -6667,7 +9407,7 @@ md_atof (type, litP, sizeP) default: *sizeP = 0; - return _("Bad call to MD_ATOF()"); + return _("bad call to MD_ATOF()"); } t = atof_ieee (input_line_pointer, type, words); @@ -6685,14 +9425,21 @@ md_atof (type, litP, sizeP) } else { - /* For a 4 byte float the order of elements in `words' is 1 0. For an - 8 byte float the order is 1 0 3 2. */ - for (i = 0; i < prec; i += 2) - { - md_number_to_chars (litP, (valueT) words[i + 1], 2); - md_number_to_chars (litP + 2, (valueT) words[i], 2); - litP += 4; - } + if (cpu_variant & FPU_ARCH_VFP) + for (i = prec - 1; i >= 0; i--) + { + md_number_to_chars (litP, (valueT) words[i], 2); + litP += 2; + } + else + /* For a 4 byte float the order of elements in `words' is 1 0. + For an 8 byte float the order is 1 0 3 2. */ + for (i = 0; i < prec; i += 2) + { + md_number_to_chars (litP, (valueT) words[i + 1], 2); + md_number_to_chars (litP + 2, (valueT) words[i], 2); + litP += 4; + } } return 0; @@ -6773,8 +9520,9 @@ md_undefined_symbol (name) advance the pointer. */ static int -arm_reg_parse (ccp) +arm_reg_parse (ccp, htab) register char ** ccp; + struct hash_control *htab; { char * start = * ccp; char c; @@ -6792,15 +9540,15 @@ arm_reg_parse (ccp) p++, start++; #endif #endif - if (!isalpha (*p) || !is_name_beginner (*p)) + if (!ISALPHA (*p) || !is_name_beginner (*p)) return FAIL; c = *p++; - while (isalpha (c) || isdigit (c) || c == '_') + while (ISALPHA (c) || ISDIGIT (c) || c == '_') c = *p++; *--p = 0; - reg = (struct reg_entry *) hash_find (arm_reg_hsh, start); + reg = (struct reg_entry *) hash_find (htab, start); *p = c; if (reg) @@ -6812,13 +9560,29 @@ arm_reg_parse (ccp) return FAIL; } -int -md_apply_fix3 (fixP, val, seg) +/* Search for the following register name in each of the possible reg name + tables. Return the classification if found, or REG_TYPE_MAX if not + present. */ +static enum arm_reg_type +arm_reg_parse_any (cp) + char *cp; +{ + int i; + + for (i = (int) REG_TYPE_FIRST; i < (int) REG_TYPE_MAX; i++) + if (arm_reg_parse (&cp, all_reg_maps[i].htab) != FAIL) + return (enum arm_reg_type) i; + + return REG_TYPE_MAX; +} + +void +md_apply_fix3 (fixP, valP, seg) fixS * fixP; - valueT * val; + valueT * valP; segT seg; { - offsetT value = * val; + offsetT value = * valP; offsetT newval; unsigned int newimm; unsigned long temp; @@ -6909,7 +9673,7 @@ md_apply_fix3 (fixP, val, seg) else { as_bad_where (fixP->fx_file, fixP->fx_line, - _("Unable to compute ADRL instructions for PC offset of 0x%lx"), + _("unable to compute ADRL instructions for PC offset of 0x%lx"), value); break; } @@ -7019,7 +9783,7 @@ md_apply_fix3 (fixP, val, seg) { if (((unsigned long) value) > 0xff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid swi expression")); + _("invalid swi expression")); newval = md_chars_to_number (buf, THUMB_SIZE) & 0xff00; newval |= value; md_number_to_chars (buf, newval, THUMB_SIZE); @@ -7028,7 +9792,7 @@ md_apply_fix3 (fixP, val, seg) { if (((unsigned long) value) > 0x00ffffff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid swi expression")); + _("invalid swi expression")); newval = md_chars_to_number (buf, INSN_SIZE) & 0xff000000; newval |= value; md_number_to_chars (buf, newval, INSN_SIZE); @@ -7038,7 +9802,7 @@ md_apply_fix3 (fixP, val, seg) case BFD_RELOC_ARM_MULTI: if (((unsigned long) value) > 0xffff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid expression in load/store multiple")); + _("invalid expression in load/store multiple")); newval = value | md_chars_to_number (buf, INSN_SIZE); md_number_to_chars (buf, newval, INSN_SIZE); break; @@ -7078,7 +9842,7 @@ md_apply_fix3 (fixP, val, seg) && S_GET_SEGMENT (fixP->fx_addsy) == seg) { /* Get pc relative value to go into the branch. */ - value = * val; + value = * valP; /* Permit a backward branch provided that enough bits are set. Allow a forwards branch, provided that @@ -7091,7 +9855,7 @@ md_apply_fix3 (fixP, val, seg) if (! fixP->fx_done) #endif as_bad_where (fixP->fx_file, fixP->fx_line, - _("gas can't handle same-section branch dest >= 0x04000000")); + _("GAS can't handle same-section branch dest >= 0x04000000")); } value >>= 2; @@ -7133,7 +9897,7 @@ md_apply_fix3 (fixP, val, seg) value += diff; if ((value & ~0xff) && ((value & ~0xff) != ~0xff)) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Branch out of range")); + _("branch out of range")); newval = (newval & 0xff00) | ((value & 0x1ff) >> 1); } md_number_to_chars (buf, newval, THUMB_SIZE); @@ -7149,7 +9913,7 @@ md_apply_fix3 (fixP, val, seg) value += diff; if ((value & ~0x7ff) && ((value & ~0x7ff) != ~0x7ff)) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Branch out of range")); + _("branch out of range")); newval = (newval & 0xf800) | ((value & 0xfff) >> 1); } md_number_to_chars (buf, newval, THUMB_SIZE); @@ -7172,7 +9936,7 @@ md_apply_fix3 (fixP, val, seg) value += diff; if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff)) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Branch with link out of range")); + _("branch with link out of range")); newval = (newval & 0xf800) | ((value & 0x7fffff) >> 12); newval2 = (newval2 & 0xf800) | ((value & 0xfff) >> 1); @@ -7248,7 +10012,7 @@ md_apply_fix3 (fixP, val, seg) sign = value >= 0; if (value < -1023 || value > 1023 || (value & 3)) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Illegal value for co-processor offset")); + _("illegal value for co-processor offset")); if (value < 0) value = -value; newval = md_chars_to_number (buf, INSN_SIZE) & 0xff7fff00; @@ -7272,13 +10036,13 @@ md_apply_fix3 (fixP, val, seg) if ((fixP->fx_frag->fr_address + fixP->fx_where + value) & 3) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, target not word aligned (0x%08X)"), + _("invalid offset, target not word aligned (0x%08X)"), (unsigned int) (fixP->fx_frag->fr_address + fixP->fx_where + value)); if ((value + 2) & ~0x3fe) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); /* Round up, since pc will be rounded down. */ newval |= (value + 2) >> 2; @@ -7287,28 +10051,28 @@ md_apply_fix3 (fixP, val, seg) case 9: /* SP load/store. */ if (value & ~0x3fc) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); newval |= value >> 2; break; case 6: /* Word load/store. */ if (value & ~0x7c) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); newval |= value << 4; /* 6 - 2. */ break; case 7: /* Byte load/store. */ if (value & ~0x1f) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); newval |= value << 6; break; case 8: /* Halfword load/store. */ if (value & ~0x3e) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); newval |= value << 5; /* 6 - 1. */ break; @@ -7347,7 +10111,7 @@ md_apply_fix3 (fixP, val, seg) { if (value & ~0x1fc) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid immediate for stack address calculation")); + _("invalid immediate for stack address calculation")); newval = subtract ? T_OPCODE_SUB_ST : T_OPCODE_ADD_ST; newval |= value >> 2; } @@ -7356,7 +10120,7 @@ md_apply_fix3 (fixP, val, seg) if (subtract || value & ~0x3fc) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid immediate for address calculation (value = 0x%08lX)"), + _("invalid immediate for address calculation (value = 0x%08lX)"), (unsigned long) value); newval = (rs == REG_PC ? T_OPCODE_ADD_PC : T_OPCODE_ADD_SP); newval |= rd << 8; @@ -7366,7 +10130,7 @@ md_apply_fix3 (fixP, val, seg) { if (value & ~0xff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid 8bit immediate")); + _("invalid 8bit immediate")); newval = subtract ? T_OPCODE_SUB_I8 : T_OPCODE_ADD_I8; newval |= (rd << 8) | value; } @@ -7374,7 +10138,7 @@ md_apply_fix3 (fixP, val, seg) { if (value & ~0x7) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid 3bit immediate")); + _("invalid 3bit immediate")); newval = subtract ? T_OPCODE_SUB_I3 : T_OPCODE_ADD_I3; newval |= rd | (rs << 3) | (value << 6); } @@ -7390,7 +10154,7 @@ md_apply_fix3 (fixP, val, seg) case 0x05: /* 8bit immediate CMP. */ if (value < 0 || value > 255) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid immediate: %ld is too large"), + _("invalid immediate: %ld is too large"), (long) value); newval |= value; break; @@ -7405,7 +10169,7 @@ md_apply_fix3 (fixP, val, seg) /* 5bit shift value (0..31). */ if (value < 0 || value > 31) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Illegal Thumb shift value: %ld"), (long) value); + _("illegal Thumb shift value: %ld"), (long) value); newval = md_chars_to_number (buf, THUMB_SIZE) & 0xf03f; newval |= value << 6; md_number_to_chars (buf, newval, THUMB_SIZE); @@ -7414,15 +10178,13 @@ md_apply_fix3 (fixP, val, seg) case BFD_RELOC_VTABLE_INHERIT: case BFD_RELOC_VTABLE_ENTRY: fixP->fx_done = 0; - return 1; + return; case BFD_RELOC_NONE: default: as_bad_where (fixP->fx_file, fixP->fx_line, - _("Bad relocation fixup type (%d)"), fixP->fx_r_type); + _("bad relocation fixup type (%d)"), fixP->fx_r_type); } - - return 1; } /* Translate internal representation of relocation info to BFD target @@ -7492,7 +10254,7 @@ tc_gen_reloc (section, fixp) /* If this is called then the a literal has been referenced across a section boundary - possibly due to an implicit dump. */ as_bad_where (fixp->fx_file, fixp->fx_line, - _("Literal referenced across section boundary (Implicit dump?)")); + _("literal referenced across section boundary (Implicit dump?)")); return NULL; #ifdef OBJ_ELF @@ -7505,7 +10267,7 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_ARM_IMMEDIATE: as_bad_where (fixp->fx_file, fixp->fx_line, - _("Internal_relocation (type %d) not fixed up (IMMEDIATE)"), + _("internal relocation (type %d) not fixed up (IMMEDIATE)"), fixp->fx_r_type); return NULL; @@ -7516,7 +10278,7 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_ARM_OFFSET_IMM: as_bad_where (fixp->fx_file, fixp->fx_line, - _("Internal_relocation (type %d) not fixed up (OFFSET_IMM)"), + _("internal_relocation (type %d) not fixed up (OFFSET_IMM)"), fixp->fx_r_type); return NULL; @@ -7540,7 +10302,7 @@ tc_gen_reloc (section, fixp) default: type = _("<unknown>"); break; } as_bad_where (fixp->fx_file, fixp->fx_line, - _("Cannot represent %s relocation in this object file format"), + _("cannot represent %s relocation in this object file format"), type); return NULL; } @@ -7561,7 +10323,7 @@ tc_gen_reloc (section, fixp) if (reloc->howto == NULL) { as_bad_where (fixp->fx_file, fixp->fx_line, - _("Can not represent %s relocation in this object file format"), + _("cannot represent %s relocation in this object file format"), bfd_get_reloc_code_name (code)); return NULL; } @@ -7584,13 +10346,14 @@ md_estimate_size_before_relax (fragP, segtype) } static void -output_inst PARAMS ((void)) +output_inst (str) + const char *str; { char * to = NULL; if (inst.error) { - as_bad (inst.error); + as_bad ("%s -- `%s'", inst.error, str); return; } @@ -7625,10 +10388,9 @@ void md_assemble (str) char * str; { - char c; - char * p; - char * q; - char * start; + char c; + char *p; + char *start; /* Align the instruction. This may not be the right thing to do but ... */ @@ -7658,261 +10420,100 @@ md_assemble (str) if (p == str) { - as_bad (_("No operator -- statement `%s'\n"), str); + as_bad (_("no operator -- statement `%s'\n"), str); return; } if (thumb_mode) { - CONST struct thumb_opcode * opcode; + const struct thumb_opcode * opcode; c = *p; *p = '\0'; - opcode = (CONST struct thumb_opcode *) hash_find (arm_tops_hsh, str); + opcode = (const struct thumb_opcode *) hash_find (arm_tops_hsh, str); *p = c; if (opcode) { /* Check that this instruction is supported for this CPU. */ - if (thumb_mode == 1 && (opcode->variants & cpu_variant) == 0) + if (thumb_mode == 1 && (opcode->variant & cpu_variant) == 0) { - as_bad (_("selected processor does not support this opcode")); + as_bad (_("selected processor does not support `%s'"), str); return; } inst.instruction = opcode->value; inst.size = opcode->size; (*opcode->parms) (p); - output_inst (); + output_inst (str); return; } } else { - CONST struct asm_opcode * opcode; - unsigned long cond_code; + const struct asm_opcode * opcode; - inst.size = INSN_SIZE; - /* P now points to the end of the opcode, probably white space, but we - have to break the opcode up in case it contains condionals and flags; - keep trying with progressively smaller basic instructions until one - matches, or we run out of opcode. */ - q = (p - str > LONGEST_INST) ? str + LONGEST_INST : p; + c = *p; + *p = '\0'; + opcode = (const struct asm_opcode *) hash_find (arm_ops_hsh, str); + *p = c; - for (; q != str; q--) + if (opcode) { - c = *q; - *q = '\0'; - - opcode = (CONST struct asm_opcode *) hash_find (arm_ops_hsh, str); - *q = c; - - if (opcode && opcode->template) + /* Check that this instruction is supported for this CPU. */ + if ((opcode->variant & cpu_variant) == 0) { - unsigned long flag_bits = 0; - char * r; - - /* Check that this instruction is supported for this CPU. */ - if ((opcode->variants & cpu_variant) == 0) - goto try_shorter; - - inst.instruction = opcode->value; - if (q == p) /* Just a simple opcode. */ - { - if (opcode->comp_suffix) - { - if (*opcode->comp_suffix != '\0') - as_bad (_("Opcode `%s' must have suffix from list: <%s>"), - str, opcode->comp_suffix); - else - /* Not a conditional instruction. */ - (*opcode->parms) (q, 0); - } - else - { - /* A conditional instruction with default condition. */ - inst.instruction |= COND_ALWAYS; - (*opcode->parms) (q, 0); - } - output_inst (); - return; - } - - /* Not just a simple opcode. Check if extra is a - conditional. */ - r = q; - if (p - r >= 2) - { - CONST struct asm_cond *cond; - char d = *(r + 2); - - *(r + 2) = '\0'; - cond = (CONST struct asm_cond *) hash_find (arm_cond_hsh, r); - *(r + 2) = d; - if (cond) - { - if (cond->value == 0xf0000000) - as_tsktsk ( -_("Warning: Use of the 'nv' conditional is deprecated\n")); - - cond_code = cond->value; - r += 2; - } - else - cond_code = COND_ALWAYS; - } - else - cond_code = COND_ALWAYS; - - /* Apply the conditional, or complain it's not allowed. */ - if (opcode->comp_suffix && *opcode->comp_suffix == '\0') - { - /* Instruction isn't conditional. */ - if (cond_code != COND_ALWAYS) - { - as_bad (_("Opcode `%s' is unconditional\n"), str); - return; - } - } - else - /* Instruction is conditional: set the condition into it. */ - inst.instruction |= cond_code; - - /* If there is a compulsory suffix, it should come here - before any optional flags. */ - if (opcode->comp_suffix && *opcode->comp_suffix != '\0') - { - CONST char *s = opcode->comp_suffix; - - while (*s) - { - inst.suffix++; - if (*r == *s) - break; - s++; - } - - if (*s == '\0') - { - as_bad (_("Opcode `%s' must have suffix from <%s>\n"), - str, opcode->comp_suffix); - return; - } - - r++; - } - - /* The remainder, if any should now be flags for the instruction; - Scan these checking each one found with the opcode. */ - if (r != p) - { - char d; - CONST struct asm_flg *flag = opcode->flags; - - if (flag) - { - int flagno; - - d = *p; - *p = '\0'; - - for (flagno = 0; flag[flagno].template; flagno++) - { - if (streq (r, flag[flagno].template)) - { - flag_bits |= flag[flagno].set_bits; - break; - } - } - - *p = d; - if (! flag[flagno].template) - goto try_shorter; - } - else - goto try_shorter; - } - - (*opcode->parms) (p, flag_bits); - output_inst (); + as_bad (_("selected processor does not support `%s'"), str); return; } - try_shorter: - ; + inst.instruction = opcode->value; + inst.size = INSN_SIZE; + (*opcode->parms) (p); + output_inst (str); + return; } } /* It wasn't an instruction, but it might be a register alias of the form alias .req reg. */ - q = p; - skip_whitespace (q); - - c = *p; - *p = '\0'; - - if (*q && !strncmp (q, ".req ", 4)) - { - int reg; - char * copy_of_str; - char * r; - -#ifdef IGNORE_OPCODE_CASE - str = original_case_string; -#endif - copy_of_str = str; - - q += 4; - skip_whitespace (q); - - for (r = q; *r != '\0'; r++) - if (*r == ' ') - break; - - if (r != q) - { - int regnum; - char d = *r; - - *r = '\0'; - regnum = arm_reg_parse (& q); - *r = d; - - reg = arm_reg_parse (& str); - - if (reg == FAIL) - { - if (regnum != FAIL) - insert_reg_alias (str, regnum); - else - as_warn (_("register '%s' does not exist\n"), q); - } - else if (regnum != FAIL) - { - if (reg != regnum) - as_warn (_("ignoring redefinition of register alias '%s'"), - copy_of_str); - - /* Do not warn about redefinitions to the same alias. */ - } - else - as_warn (_("ignoring redefinition of register alias '%s' to non-existant register '%s'"), - copy_of_str, q); - } - else - as_warn (_("ignoring incomplete .req pseuso op")); - - *p = c; - return; - } + if (create_register_alias (str, p)) + return; - *p = c; as_bad (_("bad instruction `%s'"), start); } /* md_parse_option Invocation line includes a switch not recognized by the base assembler. - See if it's a processor-specific option. These are: + See if it's a processor-specific option. + + This routine is somewhat complicated by the need for backwards + compatibility (since older releases of gcc can't be changed). + The new options try to make the interface as compatible as + possible with GCC. + + New options (supported) are: + + -mcpu=<cpu name> Assemble for selected processor + -march=<architecture name> Assemble for selected architecture + -mfpu=<fpu architecture> Assemble for selected FPU. + -EB/-mbig-endian Big-endian + -EL/-mlittle-endian Little-endian + -k Generate PIC code + -mthumb Start in Thumb mode + -mthumb-interwork Code supports ARM/Thumb interworking + + For now we will also provide support for + + -mapcs-32 32-bit Program counter + -mapcs-26 26-bit Program counter + -macps-float Floats passed in FP registers + -mapcs-reentrant Reentrant code + -matpcs + (sometime these will probably be replaced with -mapcs=<list of options> + and -matpcs=<list of options>) + + The remaining options are only supported for back-wards compatibility. Cpu variants, the arm part is optional: -m[arm]1 Currently not supported. -m[arm]2, -m[arm]250 Arm 2 and Arm 250 processor @@ -7928,382 +10529,567 @@ _("Warning: Use of the 'nv' conditional is deprecated\n")); FP variants: -mfpa10, -mfpa11 FPA10 and 11 co-processor instructions -mfpe-old (No float load/store multiples) + -mvfpxd VFP Single precision + -mvfp All VFP -mno-fpu Disable all floating point instructions - Run-time endian selection: - -EB big endian cpu - -EL little endian cpu - ARM Procedure Calling Standard: - -mapcs-32 32 bit APCS - -mapcs-26 26 bit APCS - -mapcs-float Pass floats in float regs - -mapcs-reentrant Position independent code - -mthumb-interwork Code supports Arm/Thumb interworking - -matpcs ARM/Thumb Procedure Call Standard - -moabi Old ELF ABI */ + + The following CPU names are recognized: + arm1, arm2, arm250, arm3, arm6, arm600, arm610, arm620, + arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi, arm70, arm700, + arm700i, arm710 arm710t, arm720, arm720t, arm740t, arm710c, + arm7100, arm7500, arm7500fe, arm7tdmi, arm8, arm810, arm9, + arm920, arm920t, arm940t, arm946, arm966, arm9tdmi, arm9e, + arm10t arm10e, arm1020t, arm1020e, arm10200e, + strongarm, strongarm110, strongarm1100, strongarm1110, xscale. + + */ CONST char * md_shortopts = "m:k"; -struct option md_longopts[] = -{ #ifdef ARM_BI_ENDIAN #define OPTION_EB (OPTION_MD_BASE + 0) - {"EB", no_argument, NULL, OPTION_EB}, #define OPTION_EL (OPTION_MD_BASE + 1) - {"EL", no_argument, NULL, OPTION_EL}, -#ifdef OBJ_ELF -#define OPTION_OABI (OPTION_MD_BASE +2) - {"oabi", no_argument, NULL, OPTION_OABI}, +#else +#if TARGET_BYTES_BIG_ENDIAN +#define OPTION_EB (OPTION_MD_BASE + 0) +#else +#define OPTION_EL (OPTION_MD_BASE + 1) +#endif +#endif + +struct option md_longopts[] = +{ +#ifdef OPTION_EB + {"EB", no_argument, NULL, OPTION_EB}, #endif +#ifdef OPTION_EL + {"EL", no_argument, NULL, OPTION_EL}, #endif {NULL, no_argument, NULL, 0} }; size_t md_longopts_size = sizeof (md_longopts); -int -md_parse_option (c, arg) - int c; - char * arg; +struct arm_option_table { - char * str = arg; + char *option; /* Option name to match. */ + char *help; /* Help information. */ + int *var; /* Variable to change. */ + int value; /* What to change it to. */ + char *deprecated; /* If non-null, print this message. */ +}; - switch (c) +struct arm_option_table arm_opts[] = +{ + {"k", N_("generate PIC code"), &pic_code, 1, NULL}, + {"mthumb", N_("assemble Thumb code"), &thumb_mode, 1, NULL}, + {"mthumb-interwork", N_("support ARM/Thumb interworking"), + &support_interwork, 1, NULL}, + {"moabi", N_("use old ABI (ELF only)"), &target_oabi, 1, NULL}, + {"mapcs-32", N_("code uses 32-bit program counter"), &uses_apcs_26, 0, NULL}, + {"mapcs-26", N_("code uses 26-bit program counter"), &uses_apcs_26, 1, NULL}, + {"mapcs-float", N_("floating point args are in fp regs"), &uses_apcs_float, + 1, NULL}, + {"mapcs-reentrant", N_("re-entrant code"), &pic_code, 1, NULL}, + {"matpcs", N_("code is ATPCS conformant"), &atpcs, 1, NULL}, + {"mbig-endian", N_("assemble for big-endian"), &target_big_endian, 1, NULL}, + {"mlittle-endian", N_("assemble for little-endian"), &target_big_endian, 1, + NULL}, + + /* These are recognized by the assembler, but have no affect on code. */ + {"mapcs-frame", N_("use frame pointer"), NULL, 0, NULL}, + {"mapcs-stack-check", N_("use stack size checking"), NULL, 0, NULL}, + + /* DON'T add any new processors to this list -- we want the whole list + to go away... Add them to the processors table instead. */ + {"marm1", NULL, &legacy_cpu, ARM_ARCH_V1, N_("use -mcpu=arm1")}, + {"m1", NULL, &legacy_cpu, ARM_ARCH_V1, N_("use -mcpu=arm1")}, + {"marm2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -mcpu=arm2")}, + {"m2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -mcpu=arm2")}, + {"marm250", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm250")}, + {"m250", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm250")}, + {"marm3", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm3")}, + {"m3", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm3")}, + {"marm6", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm6")}, + {"m6", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm6")}, + {"marm600", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm600")}, + {"m600", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm600")}, + {"marm610", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm610")}, + {"m610", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm610")}, + {"marm620", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm620")}, + {"m620", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm620")}, + {"marm7", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7")}, + {"m7", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7")}, + {"marm70", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm70")}, + {"m70", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm70")}, + {"marm700", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700")}, + {"m700", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700")}, + {"marm700i", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700i")}, + {"m700i", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700i")}, + {"marm710", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710")}, + {"m710", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710")}, + {"marm710c", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710c")}, + {"m710c", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710c")}, + {"marm720", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm720")}, + {"m720", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm720")}, + {"marm7d", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7d")}, + {"m7d", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7d")}, + {"marm7di", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7di")}, + {"m7di", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7di")}, + {"marm7m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7m")}, + {"m7m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7m")}, + {"marm7dm", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dm")}, + {"m7dm", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dm")}, + {"marm7dmi", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dmi")}, + {"m7dmi", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dmi")}, + {"marm7100", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7100")}, + {"m7100", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7100")}, + {"marm7500", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500")}, + {"m7500", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500")}, + {"marm7500fe", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500fe")}, + {"m7500fe", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500fe")}, + {"marm7t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, + {"m7t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, + {"marm7tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, + {"m7tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, + {"marm710t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm710t")}, + {"m710t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm710t")}, + {"marm720t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm720t")}, + {"m720t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm720t")}, + {"marm740t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm740t")}, + {"m740t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm740t")}, + {"marm8", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm8")}, + {"m8", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm8")}, + {"marm810", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm810")}, + {"m810", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm810")}, + {"marm9", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9")}, + {"m9", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9")}, + {"marm9tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9tdmi")}, + {"m9tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9tdmi")}, + {"marm920", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm920")}, + {"m920", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm920")}, + {"marm940", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm940")}, + {"m940", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm940")}, + {"mstrongarm", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=strongarm")}, + {"mstrongarm110", NULL, &legacy_cpu, ARM_ARCH_V4, + N_("use -mcpu=strongarm110")}, + {"mstrongarm1100", NULL, &legacy_cpu, ARM_ARCH_V4, + N_("use -mcpu=strongarm1100")}, + {"mstrongarm1110", NULL, &legacy_cpu, ARM_ARCH_V4, + N_("use -mcpu=strongarm1110")}, + {"mxscale", NULL, &legacy_cpu, ARM_ARCH_XSCALE, N_("use -mcpu=xscale")}, + {"mall", NULL, &legacy_cpu, ARM_ANY, N_("use -mcpu=all")}, + + /* Architecture variants -- don't add any more to this list either. */ + {"mv2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -march=armv2")}, + {"marmv2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -march=armv2")}, + {"mv2a", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -march=armv2a")}, + {"marmv2a", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -march=armv2a")}, + {"mv3", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -march=armv3")}, + {"marmv3", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -march=armv3")}, + {"mv3m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -march=armv3m")}, + {"marmv3m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -march=armv3m")}, + {"mv4", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -march=armv4")}, + {"marmv4", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -march=armv4")}, + {"mv4t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -march=armv4t")}, + {"marmv4t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -march=armv4t")}, + {"mv5", NULL, &legacy_cpu, ARM_ARCH_V5, N_("use -march=armv5")}, + {"marmv5", NULL, &legacy_cpu, ARM_ARCH_V5, N_("use -march=armv5")}, + {"mv5t", NULL, &legacy_cpu, ARM_ARCH_V5T, N_("use -march=armv5t")}, + {"marmv5t", NULL, &legacy_cpu, ARM_ARCH_V5T, N_("use -march=armv5t")}, + {"mv5e", NULL, &legacy_cpu, ARM_ARCH_V5TE, N_("use -march=armv5te")}, + {"marmv5e", NULL, &legacy_cpu, ARM_ARCH_V5TE, N_("use -march=armv5te")}, + + /* Floating point variants -- don't add any more to this list either. */ + {"mfpe-old", NULL, &legacy_fpu, FPU_ARCH_FPE, N_("use -mfpu=fpe")}, + {"mfpa10", NULL, &legacy_fpu, FPU_ARCH_FPA, N_("use -mfpu=fpa10")}, + {"mfpa11", NULL, &legacy_fpu, FPU_ARCH_FPA, N_("use -mfpu=fpa11")}, + {"mno-fpu", NULL, &legacy_fpu, 0, + N_("use either -mfpu=softfpa or -mfpu=softvfp")}, + + {NULL, NULL, NULL, 0, NULL} +}; + +struct arm_cpu_option_table +{ + char *name; + int value; + /* For some CPUs we assume an FPU unless the user explicitly sets + -mfpu=... */ + int default_fpu; +}; + +/* This list should, at a minimum, contain all the cpu names + recognized by GCC. */ +static struct arm_cpu_option_table arm_cpus[] = +{ + {"all", ARM_ANY, FPU_ARCH_FPA}, + {"arm1", ARM_ARCH_V1, FPU_ARCH_FPA}, + {"arm2", ARM_ARCH_V2, FPU_ARCH_FPA}, + {"arm250", ARM_ARCH_V2S, FPU_ARCH_FPA}, + {"arm3", ARM_ARCH_V2S, FPU_ARCH_FPA}, + {"arm6", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm60", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm600", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm610", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm620", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7m", ARM_ARCH_V3M, FPU_ARCH_FPA}, + {"arm7d", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7dm", ARM_ARCH_V3M, FPU_ARCH_FPA}, + {"arm7di", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7dmi", ARM_ARCH_V3M, FPU_ARCH_FPA}, + {"arm70", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm700", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm700i", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm710", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm710t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm720", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm720t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm740t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm710c", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7100", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7500", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7500fe", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm7tdmi", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm8", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"arm810", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm1", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm110", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm1100", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm1110", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"arm9", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm920", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm920t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm922t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm940t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm9tdmi", ARM_ARCH_V4T, FPU_ARCH_FPA}, + /* For V5 or later processors we default to using VFP; but the user + should really set the FPU type explicitly. */ + {"arm9e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, + {"arm9e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm926ej", ARM_ARCH_V5TEJ, FPU_ARCH_VFP_V2}, + {"arm946e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, + {"arm946e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm966e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, + {"arm966e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm10t", ARM_ARCH_V5T, FPU_ARCH_VFP_V1}, + {"arm10e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm1020", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm1020t", ARM_ARCH_V5T, FPU_ARCH_VFP_V1}, + {"arm1020e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + /* ??? XSCALE is really an architecture. */ + {"xscale", ARM_ARCH_XSCALE, FPU_ARCH_VFP_V2}, + {"i80200", ARM_ARCH_XSCALE, FPU_ARCH_VFP_V2}, + /* Maverick */ + {"ep9312", ARM_ARCH_V4T | ARM_CEXT_MAVERICK, FPU_NONE}, + {NULL, 0, 0} +}; + +struct arm_arch_option_table +{ + char *name; + int value; + int default_fpu; +}; + +/* This list should, at a minimum, contain all the architecture names + recognized by GCC. */ +static struct arm_arch_option_table arm_archs[] = +{ + {"all", ARM_ANY, FPU_ARCH_FPA}, + {"armv1", ARM_ARCH_V1, FPU_ARCH_FPA}, + {"armv2", ARM_ARCH_V2, FPU_ARCH_FPA}, + {"armv2a", ARM_ARCH_V2S, FPU_ARCH_FPA}, + {"armv2s", ARM_ARCH_V2S, FPU_ARCH_FPA}, + {"armv3", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"armv3m", ARM_ARCH_V3M, FPU_ARCH_FPA}, + {"armv4", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"armv4xm", ARM_ARCH_V4xM, FPU_ARCH_FPA}, + {"armv4t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"armv4txm", ARM_ARCH_V4TxM, FPU_ARCH_FPA}, + {"armv5", ARM_ARCH_V5, FPU_ARCH_VFP}, + {"armv5t", ARM_ARCH_V5T, FPU_ARCH_VFP}, + {"armv5txm", ARM_ARCH_V5TxM, FPU_ARCH_VFP}, + {"armv5te", ARM_ARCH_V5TE, FPU_ARCH_VFP}, + {"armv5texp", ARM_ARCH_V5TExP, FPU_ARCH_VFP}, + {"armv5tej", ARM_ARCH_V5TEJ, FPU_ARCH_VFP}, + {"xscale", ARM_ARCH_XSCALE, FPU_ARCH_VFP}, + {NULL, 0, 0} +}; + +/* ISA extensions in the co-processor space. */ +struct arm_arch_extension_table +{ + char *name; + int value; +}; + +static struct arm_arch_extension_table arm_extensions[] = +{ + {"maverick", ARM_CEXT_MAVERICK}, + {"xscale", ARM_CEXT_XSCALE}, + {NULL, 0} +}; + +struct arm_fpu_option_table +{ + char *name; + int value; +}; + +/* This list should, at a minimum, contain all the fpu names + recognized by GCC. */ +static struct arm_fpu_option_table arm_fpus[] = +{ + {"softfpa", FPU_NONE}, + {"fpe", FPU_ARCH_FPE}, + {"fpe2", FPU_ARCH_FPE}, + {"fpe3", FPU_ARCH_FPA}, /* Third release supports LFM/SFM. */ + {"fpa", FPU_ARCH_FPA}, + {"fpa10", FPU_ARCH_FPA}, + {"fpa11", FPU_ARCH_FPA}, + {"arm7500fe", FPU_ARCH_FPA}, + {"softvfp", FPU_ARCH_VFP}, + {"softvfp+vfp", FPU_ARCH_VFP_V2}, + {"vfp", FPU_ARCH_VFP_V2}, + {"vfp9", FPU_ARCH_VFP_V2}, + {"vfp10", FPU_ARCH_VFP_V2}, + {"vfp10-r0", FPU_ARCH_VFP_V1}, + {"vfpxd", FPU_ARCH_VFP_V1xD}, + {"arm1020t", FPU_ARCH_VFP_V1}, + {"arm1020e", FPU_ARCH_VFP_V2}, + {NULL, 0} +}; + +struct arm_long_option_table +{ + char *option; /* Substring to match. */ + char *help; /* Help information. */ + int (*func) PARAMS ((char *subopt)); /* Function to decode sub-option. */ + char *deprecated; /* If non-null, print this message. */ +}; + +static int +arm_parse_extension (str, opt_p) + char *str; + int *opt_p; +{ + while (str != NULL && *str != 0) { -#ifdef ARM_BI_ENDIAN - case OPTION_EB: - target_big_endian = 1; - break; - case OPTION_EL: - target_big_endian = 0; - break; -#endif + struct arm_arch_extension_table *opt; + char *ext; + int optlen; - case 'm': - switch (*str) + if (*str != '+') { - case 'f': - if (streq (str, "fpa10")) - cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_FPA10; - else if (streq (str, "fpa11")) - cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_FPA11; - else if (streq (str, "fpe-old")) - cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_CORE; - else - goto bad; - break; + as_bad (_("invalid architectural extension")); + return 0; + } - case 'n': - if (streq (str, "no-fpu")) - cpu_variant &= ~FPU_ALL; - break; + str++; + ext = strchr (str, '+'); -#ifdef OBJ_ELF - case 'o': - if (streq (str, "oabi")) - target_oabi = true; - break; -#endif + if (ext != NULL) + optlen = ext - str; + else + optlen = strlen (str); - case 't': - /* Limit assembler to generating only Thumb instructions: */ - if (streq (str, "thumb")) - { - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_EXT_THUMB; - cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_NONE; - thumb_mode = 1; - } - else if (streq (str, "thumb-interwork")) - { - if ((cpu_variant & ARM_EXT_THUMB) == 0) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_ARCH_V4T; -#if defined OBJ_COFF || defined OBJ_ELF - support_interwork = true; -#endif - } - else - goto bad; - break; + if (optlen == 0) + { + as_bad (_("missing architectural extension")); + return 0; + } - default: - if (streq (str, "all")) - { - cpu_variant = ARM_ALL | FPU_ALL; - return 1; - } -#if defined OBJ_COFF || defined OBJ_ELF - if (! strncmp (str, "apcs-", 5)) - { - /* GCC passes on all command line options starting "-mapcs-..." - to us, so we must parse them here. */ + for (opt = arm_extensions; opt->name != NULL; opt++) + if (strncmp (opt->name, str, optlen) == 0) + { + *opt_p |= opt->value; + break; + } - str += 5; + if (opt->name == NULL) + { + as_bad (_("unknown architectural extnsion `%s'"), str); + return 0; + } - if (streq (str, "32")) - { - uses_apcs_26 = false; - return 1; - } - else if (streq (str, "26")) - { - uses_apcs_26 = true; - return 1; - } - else if (streq (str, "frame")) - { - /* Stack frames are being generated - does not affect - linkage of code. */ - return 1; - } - else if (streq (str, "stack-check")) - { - /* Stack checking is being performed - does not affect - linkage, but does require that the functions - __rt_stkovf_split_small and __rt_stkovf_split_big be - present in the final link. */ + str = ext; + }; - return 1; - } - else if (streq (str, "float")) - { - /* Floating point arguments are being passed in the floating - point registers. This does affect linking, since this - version of the APCS is incompatible with the version that - passes floating points in the integer registers. */ + return 1; +} - uses_apcs_float = true; - return 1; - } - else if (streq (str, "reentrant")) - { - /* Reentrant code has been generated. This does affect - linking, since there is no point in linking reentrant/ - position independent code with absolute position code. */ - pic_code = true; - return 1; - } +static int +arm_parse_cpu (str) + char *str; +{ + struct arm_cpu_option_table *opt; + char *ext = strchr (str, '+'); + int optlen; - as_bad (_("Unrecognised APCS switch -m%s"), arg); - return 0; - } + if (ext != NULL) + optlen = ext - str; + else + optlen = strlen (str); - if (! strcmp (str, "atpcs")) - { - atpcs = true; - return 1; - } -#endif - /* Strip off optional "arm". */ - if (! strncmp (str, "arm", 3)) - str += 3; + if (optlen == 0) + { + as_bad (_("missing cpu name `%s'"), str); + return 0; + } - switch (*str) - { - case '1': - if (streq (str, "1")) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_1; - else - goto bad; - break; + for (opt = arm_cpus; opt->name != NULL; opt++) + if (strncmp (opt->name, str, optlen) == 0) + { + mcpu_cpu_opt = opt->value; + mcpu_fpu_opt = opt->default_fpu; - case '2': - if (streq (str, "2")) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_2; - else if (streq (str, "250")) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_250; - else - goto bad; - break; + if (ext != NULL) + return arm_parse_extension (ext, &mcpu_cpu_opt); - case '3': - if (streq (str, "3")) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_3; - else - goto bad; - break; + return 1; + } - case '6': - switch (strtol (str, NULL, 10)) - { - case 6: - case 60: - case 600: - case 610: - case 620: - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_6; - break; - default: - goto bad; - } - break; + as_bad (_("unknown cpu `%s'"), str); + return 0; +} - case '7': - /* Eat the processor name. */ - switch (strtol (str, & str, 10)) - { - case 7: - case 70: - case 700: - case 710: - case 720: - case 7100: - case 7500: - break; - default: - goto bad; - } - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7; - for (; *str; str++) - { - switch (*str) - { - case 't': - cpu_variant |= ARM_ARCH_V4T; - break; +static int +arm_parse_arch (str) + char *str; +{ + struct arm_arch_option_table *opt; + char *ext = strchr (str, '+'); + int optlen; - case 'm': - cpu_variant |= ARM_EXT_LONGMUL; - break; + if (ext != NULL) + optlen = ext - str; + else + optlen = strlen (str); - case 'f': /* fe => fp enabled cpu. */ - if (str[1] == 'e') - ++ str; - else - goto bad; + if (optlen == 0) + { + as_bad (_("missing architecture name `%s'"), str); + return 0; + } - case 'c': /* Left over from 710c processor name. */ - case 'd': /* Debug. */ - case 'i': /* Embedded ICE. */ - /* Included for completeness in ARM processor naming. */ - break; - default: - goto bad; - } - } - break; + for (opt = arm_archs; opt->name != NULL; opt++) + if (strcmp (opt->name, str) == 0) + { + march_cpu_opt = opt->value; + march_fpu_opt = opt->default_fpu; - case '8': - if (streq (str, "8") || streq (str, "810")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_8 | ARM_ARCH_V4; - else - goto bad; - break; + if (ext != NULL) + return arm_parse_extension (ext, &march_cpu_opt); - case '9': - if (streq (str, "9")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4T; - else if (streq (str, "920")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4; - else if (streq (str, "920t")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4T; - else if (streq (str, "9tdmi")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4T; - else - goto bad; - break; + return 1; + } - case 's': - if (streq (str, "strongarm") - || streq (str, "strongarm110") - || streq (str, "strongarm1100")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_8 | ARM_ARCH_V4; - else - goto bad; - break; + as_bad (_("unknown architecture `%s'\n"), str); + return 0; +} - case 'x': - if (streq (str, "xscale")) - cpu_variant = ARM_9 | ARM_ARCH_XSCALE; - else - goto bad; - break; - - case 'v': - /* Select variant based on architecture rather than - processor. */ - switch (*++str) - { - case '2': - switch (*++str) - { - case 'a': - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_3; - break; - case 0: - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_2; - break; - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; +static int +arm_parse_fpu (str) + char *str; +{ + struct arm_fpu_option_table *opt; - case '3': - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7; + for (opt = arm_fpus; opt->name != NULL; opt++) + if (strcmp (opt->name, str) == 0) + { + mfpu_opt = opt->value; + return 1; + } - switch (*++str) - { - case 'm': cpu_variant |= ARM_EXT_LONGMUL; break; - case 0: break; - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; + as_bad (_("unknown floating point format `%s'\n"), str); + return 0; +} - case '4': - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7 | ARM_ARCH_V4; +struct arm_long_option_table arm_long_opts[] = +{ + {"mcpu=", N_("<cpu name>\t assemble for CPU <cpu name>"), + arm_parse_cpu, NULL}, + {"march=", N_("<arch name>\t assemble for architecture <arch name>"), + arm_parse_arch, NULL}, + {"mfpu=", N_("<fpu name>\t assemble for FPU architecture <fpu name>"), + arm_parse_fpu, NULL}, + {NULL, NULL, 0, NULL} +}; - switch (*++str) - { - case 't': cpu_variant |= ARM_EXT_THUMB; break; - case 0: break; - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; +int +md_parse_option (c, arg) + int c; + char * arg; +{ + struct arm_option_table *opt; + struct arm_long_option_table *lopt; - case '5': - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_9 | ARM_ARCH_V5; - switch (*++str) - { - case 't': cpu_variant |= ARM_EXT_THUMB; break; - case 'e': cpu_variant |= ARM_EXT_V5E; break; - case 0: break; - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; + switch (c) + { +#ifdef OPTION_EB + case OPTION_EB: + target_big_endian = 1; + break; +#endif - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; +#ifdef OPTION_EL + case OPTION_EL: + target_big_endian = 0; + break; +#endif - default: - bad: - as_bad (_("Invalid processor variant -m%s"), arg); - return 0; + case 'a': + /* Listing option. Just ignore these, we don't support additional + ones. */ + return 0; + + default: + for (opt = arm_opts; opt->option != NULL; opt++) + { + if (c == opt->option[0] + && ((arg == NULL && opt->option[1] == 0) + || strcmp (arg, opt->option + 1) == 0)) + { +#if WARN_DEPRECATED + /* If the option is deprecated, tell the user. */ + if (opt->deprecated != NULL) + as_tsktsk (_("option `-%c%s' is deprecated: %s"), c, + arg ? arg : "", _(opt->deprecated)); +#endif + + if (opt->var != NULL) + *opt->var = opt->value; + + return 1; } } - break; -#if defined OBJ_ELF || defined OBJ_COFF - case 'k': - pic_code = 1; - break; + for (lopt = arm_long_opts; lopt->option != NULL; lopt++) + { + /* These options are expected to have an argument. */ + if (c == lopt->option[0] + && arg != NULL + && strncmp (arg, lopt->option + 1, + strlen (lopt->option + 1)) == 0) + { +#if WARN_DEPRECATED + /* If the option is deprecated, tell the user. */ + if (lopt->deprecated != NULL) + as_tsktsk (_("option `-%c%s' is deprecated: %s"), c, arg, + _(lopt->deprecated)); #endif - default: + /* Call the sup-option parser. */ + return (*lopt->func)(arg + strlen (lopt->option) - 1); + } + } + + as_bad (_("unrecognized option `-%c%s'"), c, arg ? arg : ""); return 0; } @@ -8314,32 +11100,27 @@ void md_show_usage (fp) FILE * fp; { + struct arm_option_table *opt; + struct arm_long_option_table *lopt; + + fprintf (fp, _(" ARM-specific assembler options:\n")); + + for (opt = arm_opts; opt->option != NULL; opt++) + if (opt->help != NULL) + fprintf (fp, " -%-23s%s\n", opt->option, _(opt->help)); + + for (lopt = arm_long_opts; lopt->option != NULL; lopt++) + if (lopt->help != NULL) + fprintf (fp, " -%s%s\n", lopt->option, _(lopt->help)); + +#ifdef OPTION_EB fprintf (fp, _("\ - ARM Specific Assembler Options:\n\ - -m[arm][<processor name>] select processor variant\n\ - -m[arm]v[2|2a|3|3m|4|4t|5[t][e]] select architecture variant\n\ - -mthumb only allow Thumb instructions\n\ - -mthumb-interwork mark the assembled code as supporting interworking\n\ - -mall allow any instruction\n\ - -mfpa10, -mfpa11 select floating point architecture\n\ - -mfpe-old don't allow floating-point multiple instructions\n\ - -mno-fpu don't allow any floating-point instructions.\n\ - -k generate PIC code.\n")); -#if defined OBJ_COFF || defined OBJ_ELF - fprintf (fp, _("\ - -mapcs-32, -mapcs-26 specify which ARM Procedure Calling Standard to use\n\ - -matpcs use ARM/Thumb Procedure Calling Standard\n\ - -mapcs-float floating point args are passed in FP regs\n\ - -mapcs-reentrant the code is position independent/reentrant\n")); -#endif -#ifdef OBJ_ELF - fprintf (fp, _("\ - -moabi support the old ELF ABI\n")); + -EB assemble code for a big-endian cpu\n")); #endif -#ifdef ARM_BI_ENDIAN + +#ifdef OPTION_EL fprintf (fp, _("\ - -EB assemble code for a big endian cpu\n\ - -EL assemble code for a little endian cpu\n")); + -EL assemble code for a little-endian cpu\n")); #endif } @@ -8741,9 +11522,9 @@ arm_parse_reloc () }; for (i = 0, ip = input_line_pointer; - i < sizeof (id) && (isalnum (*ip) || ispunct (*ip)); + i < sizeof (id) && (ISALNUM (*ip) || ISPUNCT (*ip)); i++, ip++) - id[i] = tolower (*ip); + id[i] = TOLOWER (*ip); for (i = 0; reloc_map[i].str; i++) if (strncmp (id, reloc_map[i].str, reloc_map[i].len) == 0) diff --git a/contrib/binutils/gas/config/tc-arm.h b/contrib/binutils/gas/config/tc-arm.h index 8de5704..2de9674 100644 --- a/contrib/binutils/gas/config/tc-arm.h +++ b/contrib/binutils/gas/config/tc-arm.h @@ -169,12 +169,6 @@ void armelf_frob_symbol PARAMS ((symbolS *, int *)); #define OPTIONAL_REGISTER_PREFIX '%' -#define md_operand(x) - -#define TC_HANDLES_FX_DONE - -#define MD_APPLY_FIX3 - #define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L')) #define LOCAL_LABELS_FB 1 #ifdef OBJ_ELF diff --git a/contrib/binutils/gas/config/tc-i386.c b/contrib/binutils/gas/config/tc-i386.c index bbd4fc4..c81f870 100644 --- a/contrib/binutils/gas/config/tc-i386.c +++ b/contrib/binutils/gas/config/tc-i386.c @@ -26,9 +26,8 @@ Bugs & suggestions are completely welcome. This is free software. Please help us make it better. */ -#include <ctype.h> - #include "as.h" +#include "safe-ctype.h" #include "subsegs.h" #include "dwarf2dbg.h" #include "opcode/i386.h" @@ -78,7 +77,7 @@ static bfd_reloc_code_real_type reloc #ifndef DEFAULT_ARCH #define DEFAULT_ARCH "i386" #endif -static char *default_arch = DEFAULT_ARCH; +static const char *default_arch = DEFAULT_ARCH; /* 'md_assemble ()' gathers together information and puts it into a i386_insn. */ @@ -157,7 +156,7 @@ const char extra_symbol_chars[] = "*%-("; /* This array holds the chars that always start a comment. If the pre-processor is disabled, these aren't very useful. */ -#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD)) +#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD) && !defined(TE_NetBSD)) /* Putting '/' here makes it impossible to use the divide operator. However, we need it for compatibility with SVR4 systems. */ const char comment_chars[] = "#/"; @@ -175,7 +174,7 @@ const char comment_chars[] = "#"; #NO_APP at the beginning of its output. Also note that comments started like this one will always work if '/' isn't otherwise defined. */ -#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD)) +#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD) && !defined(TE_NetBSD)) const char line_comment_chars[] = ""; #else const char line_comment_chars[] = "/"; @@ -540,8 +539,7 @@ static int smallest_imm_type (num) offsetT num; { - if (cpu_arch_flags != (Cpu086 | Cpu186 | Cpu286 | Cpu386 | Cpu486 | CpuNo64) - && !(cpu_arch_flags & (CpuUnknown))) + if (cpu_arch_flags != (Cpu086 | Cpu186 | Cpu286 | Cpu386 | Cpu486 | CpuNo64)) { /* This code is disabled on the 486 because all the Imm1 forms in the opcode table are slower on the i486. They're the @@ -891,27 +889,27 @@ md_begin () for (c = 0; c < 256; c++) { - if (isdigit (c)) + if (ISDIGIT (c)) { digit_chars[c] = c; mnemonic_chars[c] = c; register_chars[c] = c; operand_chars[c] = c; } - else if (islower (c)) + else if (ISLOWER (c)) { mnemonic_chars[c] = c; register_chars[c] = c; operand_chars[c] = c; } - else if (isupper (c)) + else if (ISUPPER (c)) { - mnemonic_chars[c] = tolower (c); + mnemonic_chars[c] = TOLOWER (c); register_chars[c] = mnemonic_chars[c]; operand_chars[c] = c; } - if (isalpha (c) || isdigit (c)) + if (ISALPHA (c) || ISDIGIT (c)) identifier_chars[c] = c; else if (c >= 128) { @@ -1269,7 +1267,8 @@ md_assemble (line) } if (!is_space_char (*l) && *l != END_OF_INSN - && *l != PREFIX_SEPARATOR) + && *l != PREFIX_SEPARATOR + && *l != ',') { as_bad (_("invalid character %s in mnemonic"), output_invalid (*l)); @@ -1360,20 +1359,49 @@ md_assemble (line) } } - /* Check if instruction is supported on specified architecture. */ - if (cpu_arch_flags != 0) + if (current_templates->start->opcode_modifier & (Jump | JumpByte)) { - if ((current_templates->start->cpu_flags & ~(Cpu64 | CpuNo64)) - & ~(cpu_arch_flags & ~(Cpu64 | CpuNo64))) - { - as_warn (_("`%s' is not supported on `%s'"), - current_templates->start->name, cpu_arch_name); - } - else if ((Cpu386 & ~cpu_arch_flags) && (flag_code != CODE_16BIT)) + /* Check for a branch hint. We allow ",pt" and ",pn" for + predict taken and predict not taken respectively. + I'm not sure that branch hints actually do anything on loop + and jcxz insns (JumpByte) for current Pentium4 chips. They + may work in the future and it doesn't hurt to accept them + now. */ + if (l[0] == ',' && l[1] == 'p') { - as_warn (_("use .code16 to ensure correct addressing mode")); + if (l[2] == 't') + { + if (! add_prefix (DS_PREFIX_OPCODE)) + return; + l += 3; + } + else if (l[2] == 'n') + { + if (! add_prefix (CS_PREFIX_OPCODE)) + return; + l += 3; + } } } + /* Any other comma loses. */ + if (*l == ',') + { + as_bad (_("invalid character %s in mnemonic"), + output_invalid (*l)); + return; + } + + /* Check if instruction is supported on specified architecture. */ + if ((current_templates->start->cpu_flags & ~(Cpu64 | CpuNo64)) + & ~(cpu_arch_flags & ~(Cpu64 | CpuNo64))) + { + as_warn (_("`%s' is not supported on `%s'"), + current_templates->start->name, cpu_arch_name); + } + else if ((Cpu386 & ~cpu_arch_flags) && (flag_code != CODE_16BIT)) + { + as_warn (_("use .code16 to ensure correct addressing mode")); + } /* Check for rep/repne without a string instruction. */ if (expecting_string_instruction @@ -2695,6 +2723,9 @@ md_assemble (line) { int code16; int prefix; + relax_substateT subtype; + symbolS *sym; + offsetT off; code16 = 0; if (flag_code == CODE_16BIT) @@ -2739,19 +2770,29 @@ md_assemble (line) if (i.prefix[REX_PREFIX]) *p++ = i.prefix[REX_PREFIX]; *p = i.tm.base_opcode; - /* 1 possible extra opcode + displacement go in var part. + + if ((unsigned char) *p == JUMP_PC_RELATIVE) + subtype = ENCODE_RELAX_STATE (UNCOND_JUMP, SMALL); + else if ((cpu_arch_flags & Cpu386) != 0) + subtype = ENCODE_RELAX_STATE (COND_JUMP, SMALL); + else + subtype = ENCODE_RELAX_STATE (COND_JUMP86, SMALL); + subtype |= code16; + + sym = i.op[0].disps->X_add_symbol; + off = i.op[0].disps->X_add_number; + + if (i.op[0].disps->X_op != O_constant + && i.op[0].disps->X_op != O_symbol) + { + /* Handle complex expressions. */ + sym = make_expr_symbol (i.op[0].disps); + off = 0; + } + + /* 1 possible extra opcode + 4 byte displacement go in var part. Pass reloc in fr_var. */ - frag_var (rs_machine_dependent, - 1 + 4, - i.reloc[0], - ((unsigned char) *p == JUMP_PC_RELATIVE - ? ENCODE_RELAX_STATE (UNCOND_JUMP, SMALL) | code16 - : ((cpu_arch_flags & Cpu386) != 0 - ? ENCODE_RELAX_STATE (COND_JUMP, SMALL) | code16 - : ENCODE_RELAX_STATE (COND_JUMP86, SMALL) | code16)), - i.op[0].disps->X_add_symbol, - i.op[0].disps->X_add_number, - p); + frag_var (rs_machine_dependent, 5, i.reloc[0], subtype, sym, off, p); } else if (i.tm.opcode_modifier & (JumpByte | JumpDword)) { @@ -3135,27 +3176,41 @@ lex_got (reloc, adjust) int len; len = strlen (gotrel[j].str); - if (strncmp (cp + 1, gotrel[j].str, len) == 0) + if (strncasecmp (cp + 1, gotrel[j].str, len) == 0) { if (gotrel[j].rel[(unsigned int) flag_code] != 0) { - int first; - char *tmpbuf; + int first, second; + char *tmpbuf, *past_reloc; *reloc = gotrel[j].rel[(unsigned int) flag_code]; + if (adjust) + *adjust = len; if (GOT_symbol == NULL) GOT_symbol = symbol_find_or_make (GLOBAL_OFFSET_TABLE_NAME); /* Replace the relocation token with ' ', so that errors like foo@GOTOFF1 will be detected. */ + + /* The length of the first part of our input line. */ first = cp - input_line_pointer; - tmpbuf = xmalloc (strlen (input_line_pointer)); + + /* The second part goes from after the reloc token until + (and including) an end_of_line char. Don't use strlen + here as the end_of_line char may not be a NUL. */ + past_reloc = cp + 1 + len; + for (cp = past_reloc; !is_end_of_line[(unsigned char) *cp++]; ) + ; + second = cp - past_reloc; + + /* Allocate and copy string. The trailing NUL shouldn't + be necessary, but be safe. */ + tmpbuf = xmalloc (first + second + 2); memcpy (tmpbuf, input_line_pointer, first); tmpbuf[first] = ' '; - strcpy (tmpbuf + first + 1, cp + 1 + len); - if (adjust) - *adjust = len; + memcpy (tmpbuf + first + 1, past_reloc, second); + tmpbuf[first + second + 1] = '\0'; return tmpbuf; } @@ -4042,15 +4097,6 @@ md_convert_frag (abfd, sec, fragP) /* Address we want to reach in file space. */ target_address = S_GET_VALUE (fragP->fr_symbol) + fragP->fr_offset; -#ifdef BFD_ASSEMBLER - /* Not needed otherwise? */ - { - /* Local symbols which have already been resolved have a NULL frag. */ - fragS *sym_frag = symbol_get_frag (fragP->fr_symbol); - if (sym_frag) - target_address += sym_frag->fr_address; - } -#endif /* Address opcode resides at in file space. */ opcode_address = fragP->fr_address + fragP->fr_fix; @@ -4165,19 +4211,17 @@ md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol) the same (little-endian) format, so we don't need to care about which we are handling. */ -int -md_apply_fix3 (fixP, valp, seg) +void +md_apply_fix3 (fixP, valP, seg) /* The fix we're to put in. */ fixS *fixP; - /* Pointer to the value of the bits. */ - valueT *valp; - + valueT * valP; /* Segment fix is from. */ segT seg ATTRIBUTE_UNUSED; { - register char *p = fixP->fx_where + fixP->fx_frag->fr_literal; - valueT value = *valp; + char *p = fixP->fx_where + fixP->fx_frag->fr_literal; + valueT value = * valP; #if defined (BFD_ASSEMBLER) && !defined (TE_Mach) if (fixP->fx_pcrel) @@ -4311,30 +4355,26 @@ md_apply_fix3 (fixP, valp, seg) case BFD_RELOC_VTABLE_INHERIT: case BFD_RELOC_VTABLE_ENTRY: fixP->fx_done = 0; - return 1; + return; default: break; } #endif /* defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) */ - *valp = value; + * valP = value; #endif /* defined (BFD_ASSEMBLER) && !defined (TE_Mach) */ -#ifndef BFD_ASSEMBLER - md_number_to_chars (p, value, fixP->fx_size); -#else /* Are we finished with this relocation now? */ - if (fixP->fx_addsy == 0 && fixP->fx_pcrel == 0) + if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0) fixP->fx_done = 1; +#ifdef BFD_ASSEMBLER else if (use_rela_relocations) { fixP->fx_no_overflow = 1; value = 0; } - md_number_to_chars (p, value, fixP->fx_size); #endif - - return 1; + md_number_to_chars (p, value, fixP->fx_size); } #define MAX_LITTLENUMS 6 @@ -4397,7 +4437,7 @@ static char * output_invalid (c) int c; { - if (isprint (c)) + if (ISPRINT (c)) sprintf (output_invalid_buf, "'%c'", c); else sprintf (output_invalid_buf, "(0x%x)", (unsigned) c); @@ -4611,6 +4651,48 @@ i386_target_format () } #endif /* OBJ_MAYBE_ more than one */ + +#if (defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) +void i386_elf_emit_arch_note () +{ + if (OUTPUT_FLAVOR == bfd_target_elf_flavour + && cpu_arch_name != NULL) + { + char *p; + asection *seg = now_seg; + subsegT subseg = now_subseg; + Elf_Internal_Note i_note; + Elf_External_Note e_note; + asection *note_secp; + int len; + + /* Create the .note section. */ + note_secp = subseg_new (".note", 0); + bfd_set_section_flags (stdoutput, + note_secp, + SEC_HAS_CONTENTS | SEC_READONLY); + + /* Process the arch string. */ + len = strlen (cpu_arch_name); + + i_note.namesz = len + 1; + i_note.descsz = 0; + i_note.type = NT_ARCH; + p = frag_more (sizeof (e_note.namesz)); + md_number_to_chars (p, (valueT) i_note.namesz, sizeof (e_note.namesz)); + p = frag_more (sizeof (e_note.descsz)); + md_number_to_chars (p, (valueT) i_note.descsz, sizeof (e_note.descsz)); + p = frag_more (sizeof (e_note.type)); + md_number_to_chars (p, (valueT) i_note.type, sizeof (e_note.type)); + p = frag_more (len + 1); + strcpy (p, cpu_arch_name); + + frag_align (2, 0, 0); + + subseg_set (seg, subseg); + } +} +#endif #endif /* BFD_ASSEMBLER */ symbolS * @@ -4741,8 +4823,9 @@ tc_gen_reloc (section, fixp) switch (fixp->fx_size) { default: - as_bad (_("can not do %d byte pc-relative relocation"), - fixp->fx_size); + as_bad_where (fixp->fx_file, fixp->fx_line, + _("can not do %d byte pc-relative relocation"), + fixp->fx_size); code = BFD_RELOC_32_PCREL; break; case 1: code = BFD_RELOC_8_PCREL; break; @@ -4755,7 +4838,9 @@ tc_gen_reloc (section, fixp) switch (fixp->fx_size) { default: - as_bad (_("can not do %d byte relocation"), fixp->fx_size); + as_bad_where (fixp->fx_file, fixp->fx_line, + _("can not do %d byte relocation"), + fixp->fx_size); code = BFD_RELOC_32; break; case 1: code = BFD_RELOC_8; break; diff --git a/contrib/binutils/gas/config/tc-i386.h b/contrib/binutils/gas/config/tc-i386.h index 71e0c88..d5ba043 100644 --- a/contrib/binutils/gas/config/tc-i386.h +++ b/contrib/binutils/gas/config/tc-i386.h @@ -111,6 +111,11 @@ extern const char *i386_target_format PARAMS ((void)); #endif #endif +#if (defined (OBJ_MAYBE_ELF) || defined (OBJ_ELF)) +#define md_end i386_elf_emit_arch_note +extern void i386_elf_emit_arch_note PARAMS ((void)); +#endif + #else /* ! BFD_ASSEMBLER */ /* COFF STUFF */ @@ -121,7 +126,7 @@ extern const char *i386_target_format PARAMS ((void)); #define TC_COUNT_RELOC(x) ((x)->fx_addsy || (x)->fx_r_type==7) #define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype(fixP) extern short tc_coff_fix2rtype PARAMS ((struct fix *)); -#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag) +#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag) extern int tc_coff_sizemachdep PARAMS ((fragS *frag)); #ifdef TE_GO32 @@ -293,7 +298,6 @@ typedef struct #define CpuSSE 0x1000 /* Streaming SIMD extensions required */ #define CpuSSE2 0x2000 /* Streaming SIMD extensions 2 required */ #define Cpu3dnow 0x4000 /* 3dnow! support required */ -#define CpuUnknown 0x8000 /* The CPU is unknown, be on the safe side. */ /* These flags are set by gas depending on the flag_code. */ #define Cpu64 0x4000000 /* 64bit support required */ @@ -527,9 +531,6 @@ if (fragP->fr_type == rs_align_code) \ - fragP->fr_address \ - fragP->fr_fix)); -/* call md_apply_fix3 with segment instead of md_apply_fix */ -#define MD_APPLY_FIX3 - void i386_print_statistics PARAMS ((FILE *)); #define tc_print_statistics i386_print_statistics diff --git a/contrib/binutils/gas/config/tc-ia64.c b/contrib/binutils/gas/config/tc-ia64.c index 0e1c578..701752f 100644 --- a/contrib/binutils/gas/config/tc-ia64.c +++ b/contrib/binutils/gas/config/tc-ia64.c @@ -1,5 +1,5 @@ /* tc-ia64.c -- Assembler for the HP/Intel IA-64 architecture. - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by David Mosberger-Tang <davidm@hpl.hp.com> This file is part of GAS, the GNU Assembler. @@ -43,6 +43,7 @@ */ #include "as.h" +#include "safe-ctype.h" #include "dwarf2dbg.h" #include "subsegs.h" @@ -61,13 +62,17 @@ enum special_section { + /* IA-64 ABI section pseudo-ops. */ SPECIAL_SECTION_BSS = 0, SPECIAL_SECTION_SBSS, SPECIAL_SECTION_SDATA, SPECIAL_SECTION_RODATA, SPECIAL_SECTION_COMMENT, SPECIAL_SECTION_UNWIND, - SPECIAL_SECTION_UNWIND_INFO + SPECIAL_SECTION_UNWIND_INFO, + /* HPUX specific section pseudo-ops. */ + SPECIAL_SECTION_INIT_ARRAY, + SPECIAL_SECTION_FINI_ARRAY, }; enum reloc_func @@ -81,6 +86,7 @@ enum reloc_func FUNC_SEG_RELATIVE, FUNC_LTV_RELATIVE, FUNC_LT_FPTR_RELATIVE, + FUNC_IPLT_RELOC, }; enum reg_symbol @@ -279,6 +285,9 @@ static struct int g_reg_set_conditionally[128]; } last_groups[3]; int group_idx; + + int pointer_size; /* size in bytes of a pointer */ + int pointer_size_shift; /* shift size of a pointer for alignment */ } md; @@ -476,6 +485,7 @@ pseudo_func[] = { "segrel", PSEUDO_FUNC_RELOC, { 0 } }, { "ltv", PSEUDO_FUNC_RELOC, { 0 } }, { "", 0, { 0 } }, /* placeholder for FUNC_LT_FPTR_RELATIVE */ + { "iplt", PSEUDO_FUNC_RELOC, { 0 } }, /* mbtype4 constants: */ { "alt", PSEUDO_FUNC_CONST, { 0xa } }, @@ -523,7 +533,13 @@ static const bfd_vma nop[IA64_NUM_UNITS] = static char special_section_name[][20] = { {".bss"}, {".sbss"}, {".sdata"}, {".rodata"}, {".comment"}, - {".IA_64.unwind"}, {".IA_64.unwind_info"} + {".IA_64.unwind"}, {".IA_64.unwind_info"}, + {".init_array"}, {".fini_array"} + }; + +static char *special_linkonce_name[] = + { + ".gnu.linkonce.ia64unw.", ".gnu.linkonce.ia64unwi." }; /* The best template for a particular sequence of up to three @@ -703,6 +719,7 @@ static enum operand_match_result operand_match PARAMS ((const struct ia64_opcode expressionS *e)); static int parse_operand PARAMS ((expressionS *e)); static struct ia64_opcode * parse_operands PARAMS ((struct ia64_opcode *)); +static int errata_nop_necessary_p PARAMS ((struct slot *, enum ia64_unit)); static void build_insn PARAMS ((struct slot *, bfd_vma *)); static void emit_one_bundle PARAMS ((void)); static void fix_insn PARAMS ((fixS *, const struct ia64_operand *, valueT)); @@ -716,6 +733,7 @@ static void add_qp_imply PARAMS((int p1, int p2)); static void clear_qp_branch_flag PARAMS((valueT mask)); static void clear_qp_mutex PARAMS((valueT mask)); static void clear_qp_implies PARAMS((valueT p1_mask, valueT p2_mask)); +static int has_suffix_p PARAMS((const char *, const char *)); static void clear_register_values PARAMS ((void)); static void print_dependency PARAMS ((const char *action, int depind)); static void instruction_serialization PARAMS ((void)); @@ -851,12 +869,21 @@ static int generate_unwind_image PARAMS ((const char *)); stack, so this must be a macro... */ #define make_unw_section_name(special, text_name, result) \ { \ - char *_prefix = special_section_name[special]; \ - size_t _prefix_len = strlen (_prefix), _text_len = strlen (text_name); \ - char *_result = alloca (_prefix_len + _text_len + 1); \ - memcpy(_result, _prefix, _prefix_len); \ - memcpy(_result + _prefix_len, text_name, _text_len); \ - _result[_prefix_len + _text_len] = '\0'; \ + const char *_prefix = special_section_name[special]; \ + const char *_suffix = text_name; \ + size_t _prefix_len, _suffix_len; \ + char *_result; \ + if (strncmp (text_name, ".gnu.linkonce.t.", \ + sizeof (".gnu.linkonce.t.") - 1) == 0) \ + { \ + _prefix = special_linkonce_name[special - SPECIAL_SECTION_UNWIND]; \ + _suffix += sizeof (".gnu.linkonce.t.") - 1; \ + } \ + _prefix_len = strlen (_prefix), _suffix_len = strlen (_suffix); \ + _result = alloca (_prefix_len + _suffix_len + 1); \ + memcpy (_result, _prefix, _prefix_len); \ + memcpy (_result + _prefix_len, _suffix, _suffix_len); \ + _result[_prefix_len + _suffix_len] = '\0'; \ result = _result; \ } \ while (0) @@ -892,6 +919,20 @@ set_section (name) input_line_pointer = saved_input_line_pointer; } +/* Map 's' to SHF_IA_64_SHORT. */ + +int +ia64_elf_section_letter (letter, ptr_msg) + int letter; + char **ptr_msg; +{ + if (letter == 's') + return SHF_IA_64_SHORT; + + *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S in string"); + return 0; +} + /* Map SHF_IA_64_SHORT to SEC_SMALL_DATA. */ flagword @@ -909,15 +950,28 @@ ia64_elf_section_type (str, len) const char *str; size_t len; { - len = sizeof (ELF_STRING_ia64_unwind_info) - 1; - if (strncmp (str, ELF_STRING_ia64_unwind_info, len) == 0) +#define STREQ(s) ((len == sizeof (s) - 1) && (strncmp (str, s, sizeof (s) - 1) == 0)) + + if (STREQ (ELF_STRING_ia64_unwind_info)) return SHT_PROGBITS; - len = sizeof (ELF_STRING_ia64_unwind) - 1; - if (strncmp (str, ELF_STRING_ia64_unwind, len) == 0) + if (STREQ (ELF_STRING_ia64_unwind_info_once)) + return SHT_PROGBITS; + + if (STREQ (ELF_STRING_ia64_unwind)) + return SHT_IA_64_UNWIND; + + if (STREQ (ELF_STRING_ia64_unwind_once)) return SHT_IA_64_UNWIND; + if (STREQ ("init_array")) + return SHT_INIT_ARRAY; + + if (STREQ ("fini_array")) + return SHT_FINI_ARRAY; + return -1; +#undef STREQ } static unsigned int @@ -2735,6 +2789,47 @@ fixup_unw_records (list) } } +/* Helper routine for output_unw_records. Emits the header for the unwind + info. */ + +static int +setup_unwind_header (int size, unsigned char **mem) +{ + int x, extra = 0; + valueT flag_value; + + /* pad to pointer-size boundry. */ + x = size % md.pointer_size; + if (x != 0) + extra = md.pointer_size - x; + + /* Add 8 for the header + a pointer for the + personality offset. */ + *mem = xmalloc (size + extra + 8 + md.pointer_size); + + /* Clear the padding area and personality. */ + memset (*mem + 8 + size, 0 , extra + md.pointer_size); + + /* Initialize the header area. */ + if (unwind.personality_routine) + { + if (md.flags & EF_IA_64_ABI64) + flag_value = (bfd_vma) 3 << 32; + else + /* 32-bit unwind info block. */ + flag_value = (bfd_vma) 0x1003 << 32; + } + else + flag_value = 0; + + md_number_to_chars (*mem, (((bfd_vma) 1 << 48) /* Version. */ + | flag_value /* U & E handler flags. */ + | ((size + extra) / md.pointer_size)), /* Length. */ + 8); + + return extra; +} + /* Generate an unwind image from a record list. Returns the number of bytes in the resulting image. The memory image itselof is returned in the 'ptr' parameter. */ @@ -2743,7 +2838,7 @@ output_unw_records (list, ptr) unw_rec_list *list; void **ptr; { - int size, x, extra = 0; + int size, extra; unsigned char *mem; *ptr = NULL; @@ -2752,35 +2847,17 @@ output_unw_records (list, ptr) fixup_unw_records (list); size = calc_record_size (list); - /* pad to 8 byte boundry. */ - x = size % 8; - if (x != 0) - extra = 8 - x; - if (size > 0 || unwind.force_unwind_entry) { unwind.force_unwind_entry = 0; - - /* Add 8 for the header + 8 more bytes for the personality offset. */ - mem = xmalloc (size + extra + 16); + extra = setup_unwind_header (size, &mem); vbyte_mem_ptr = mem + 8; - /* Clear the padding area and personality. */ - memset (mem + 8 + size, 0 , extra + 8); - /* Initialize the header area. */ - md_number_to_chars (mem, - (((bfd_vma) 1 << 48) /* version */ - | (unwind.personality_routine - ? ((bfd_vma) 3 << 32) /* U & E handler flags */ - : 0) - | ((size + extra) / 8)), /* length (dwords) */ - 8); - process_unw_records (list, output_vbyte_mem); *ptr = mem; - size += extra + 16; + size += extra + 8 + md.pointer_size; } return size; } @@ -3149,24 +3226,26 @@ generate_unwind_image (text_name) /* Generate the unwind record. */ size = output_unw_records (unwind.list, (void **) &unw_rec); - if (size % 8 != 0) - as_bad ("Unwind record is not a multiple of 8 bytes."); - + if (size % md.pointer_size != 0) + as_bad ("Unwind record is not a multiple of %d bytes.", md.pointer_size); + /* If there are unwind records, switch sections, and output the info. */ if (size != 0) { unsigned char *where; char *sec_name; expressionS exp; + bfd_reloc_code_real_type reloc; make_unw_section_name (SPECIAL_SECTION_UNWIND_INFO, text_name, sec_name); set_section (sec_name); bfd_set_section_flags (stdoutput, now_seg, SEC_LOAD | SEC_ALLOC | SEC_READONLY); - /* Make sure the section has 8 byte alignment. */ - frag_align (3, 0, 0); - record_alignment (now_seg, 3); + /* Make sure the section has 4 byte alignment for ILP32 and + 8 byte alignment for LP64. */ + frag_align (md.pointer_size_shift, 0, 0); + record_alignment (now_seg, md.pointer_size_shift); /* Set expression which points to start of unwind descriptor area. */ unwind.info = expr_build_dot (); @@ -3186,8 +3265,24 @@ generate_unwind_image (text_name) exp.X_op = O_symbol; exp.X_add_symbol = unwind.personality_routine; exp.X_add_number = 0; - fix_new_exp (frag_now, frag_now_fix () - 8, 8, - &exp, 0, BFD_RELOC_IA64_LTOFF_FPTR64LSB); + + if (md.flags & EF_IA_64_BE) + { + if (md.flags & EF_IA_64_ABI64) + reloc = BFD_RELOC_IA64_LTOFF_FPTR64MSB; + else + reloc = BFD_RELOC_IA64_LTOFF_FPTR32MSB; + } + else + { + if (md.flags & EF_IA_64_ABI64) + reloc = BFD_RELOC_IA64_LTOFF_FPTR64LSB; + else + reloc = BFD_RELOC_IA64_LTOFF_FPTR32LSB; + } + + fix_new_exp (frag_now, frag_now_fix () - md.pointer_size, + md.pointer_size, & exp, 0, reloc); unwind.personality_routine = 0; } } @@ -3797,6 +3892,8 @@ dot_endp (dummy) segT saved_seg; subsegT saved_subseg; const char *sec_name, *text_name; + char *name, *p, c; + symbolS *sym; if (unwind.saved_text_seg) { @@ -3820,6 +3917,8 @@ dot_endp (dummy) .text .IA_64.unwind .text.foo .IA_64.unwind.text.foo .foo .IA_64.unwind.foo + .gnu.linkonce.t.foo + .gnu.linkonce.ia64unw.foo _info .IA_64.unwind_info gas issues error message (ditto) _infoFOO .IA_64.unwind_infoFOO gas issues error message (ditto) @@ -3851,9 +3950,6 @@ dot_endp (dummy) if (strcmp (text_name, ".text") == 0) text_name = ""; - expression (&e); - demand_empty_rest_of_line (); - insn_group_break (1, 0, 0); /* If there wasn't a .handlerdata, we haven't generated an image yet. */ @@ -3870,11 +3966,14 @@ dot_endp (dummy) bfd_set_section_flags (stdoutput, now_seg, SEC_LOAD | SEC_ALLOC | SEC_READONLY); - /* Make sure the section has 8 byte alignment. */ - record_alignment (now_seg, 3); + /* Make sure that section has 4 byte alignment for ILP32 and + 8 byte alignment for LP64. */ + record_alignment (now_seg, md.pointer_size_shift); - ptr = frag_more (24); - where = frag_now_fix () - 24; + /* Need space for 3 pointers for procedure start, procedure end, + and unwind info. */ + ptr = frag_more (3 * md.pointer_size); + where = frag_now_fix () - (3 * md.pointer_size); bytes_per_address = bfd_arch_bits_per_address (stdoutput) / 8; /* Issue the values of a) Proc Begin, b) Proc End, c) Unwind Record. */ @@ -3906,6 +4005,50 @@ dot_endp (dummy) } subseg_set (saved_seg, saved_subseg); + + /* Parse names of main and alternate entry points and set symbol sizes. */ + while (1) + { + SKIP_WHITESPACE (); + name = input_line_pointer; + c = get_symbol_end (); + p = input_line_pointer; + sym = symbol_find (name); + if (sym && unwind.proc_start + && (symbol_get_bfdsym (sym)->flags & BSF_FUNCTION) + && S_GET_SIZE (sym) == 0 && symbol_get_obj (sym)->size == NULL) + { + fragS *fr = symbol_get_frag (unwind.proc_start); + fragS *frag = symbol_get_frag (sym); + + /* Check whether the function label is at or beyond last + .proc directive. */ + while (fr && fr != frag) + fr = fr->fr_next; + if (fr) + { + if (frag == frag_now && SEG_NORMAL (now_seg)) + S_SET_SIZE (sym, frag_now_fix () - S_GET_VALUE (sym)); + else + { + symbol_get_obj (sym)->size = + (expressionS *) xmalloc (sizeof (expressionS)); + symbol_get_obj (sym)->size->X_op = O_subtract; + symbol_get_obj (sym)->size->X_add_symbol + = symbol_new (FAKE_LABEL_NAME, now_seg, + frag_now_fix (), frag_now); + symbol_get_obj (sym)->size->X_op_symbol = sym; + symbol_get_obj (sym)->size->X_add_number = 0; + } + } + } + *p = c; + SKIP_WHITESPACE (); + if (*input_line_pointer != ',') + break; + ++input_line_pointer; + } + demand_empty_rest_of_line (); unwind.proc_start = unwind.proc_end = unwind.info = 0; } @@ -4406,7 +4549,7 @@ dot_pred_rel (type) valueT bit = 1; int regno; - if (toupper (*input_line_pointer) != 'P' + if (TOUPPER (*input_line_pointer) != 'P' || (regno = atoi (++input_line_pointer)) < 0 || regno > 63) { @@ -4414,7 +4557,7 @@ dot_pred_rel (type) ignore_rest_of_line (); return; } - while (isdigit (*input_line_pointer)) + while (ISDIGIT (*input_line_pointer)) ++input_line_pointer; if (p1 == -1) p1 = regno; @@ -4431,7 +4574,7 @@ dot_pred_rel (type) valueT stop = 1; ++input_line_pointer; - if (toupper (*input_line_pointer) != 'P' + if (TOUPPER (*input_line_pointer) != 'P' || (regno = atoi (++input_line_pointer)) < 0 || regno > 63) { @@ -4439,7 +4582,7 @@ dot_pred_rel (type) ignore_rest_of_line (); return; } - while (isdigit (*input_line_pointer)) + while (ISDIGIT (*input_line_pointer)) ++input_line_pointer; stop <<= regno; if (bit >= stop) @@ -4582,6 +4725,8 @@ const pseudo_typeS md_pseudo_table[] = { "comment", dot_special_section, SPECIAL_SECTION_COMMENT }, { "ia_64.unwind", dot_special_section, SPECIAL_SECTION_UNWIND }, { "ia_64.unwind_info", dot_special_section, SPECIAL_SECTION_UNWIND_INFO }, + { "init_array", dot_special_section, SPECIAL_SECTION_INIT_ARRAY }, + { "fini_array", dot_special_section, SPECIAL_SECTION_FINI_ARRAY }, { "proc", dot_proc, 0 }, { "body", dot_body, 0 }, { "prologue", dot_prologue, 0 }, @@ -4677,6 +4822,15 @@ const pseudo_typeS md_pseudo_table[] = { "explicit", dot_dv_mode, 'e' }, { "default", dot_dv_mode, 'd' }, + /* ??? These are needed to make gas/testsuite/gas/elf/ehopt.s work. + IA-64 aligns data allocation pseudo-ops by default, so we have to + tell it that these ones are supposed to be unaligned. Long term, + should rewrite so that only IA-64 specific data allocation pseudo-ops + are aligned by default. */ + {"2byte", stmt_cons_ua, 2}, + {"4byte", stmt_cons_ua, 4}, + {"8byte", stmt_cons_ua, 8}, + { NULL, 0, 0 } }; @@ -4693,6 +4847,7 @@ pseudo_opcode[] = { "data2", cons, 2 }, { "data4", cons, 4 }, { "data8", cons, 8 }, + { "data16", cons, 16 }, { "real4", stmt_float_cons, 'f' }, { "real8", stmt_float_cons, 'd' }, { "real10", stmt_float_cons, 'x' }, @@ -4703,6 +4858,7 @@ pseudo_opcode[] = { "data2.ua", stmt_cons_ua, 2 }, { "data4.ua", stmt_cons_ua, 4 }, { "data8.ua", stmt_cons_ua, 8 }, + { "data16.ua", stmt_cons_ua, 16 }, { "real4.ua", float_cons, 'f' }, { "real8.ua", float_cons, 'd' }, { "real10.ua", float_cons, 'x' }, @@ -5256,7 +5412,10 @@ operand_match (idesc, index, e) case O_symbol: fix = CURR_SLOT.fixup + CURR_SLOT.num_fixups; - fix->code = ia64_gen_real_reloc_type (e->X_op_symbol, 0); + /* There are no external relocs for TAG13/TAG13b fields, so we + create a dummy reloc. This will not live past md_apply_fix3. */ + fix->code = BFD_RELOC_UNUSED; + fix->code = ia64_gen_real_reloc_type (e->X_op_symbol, fix->code); fix->opnd = idesc->operands[index]; fix->expr = *e; fix->is_pcrel = 1; @@ -6058,6 +6217,7 @@ md_parse_option (c, arg) int c; char *arg; { + switch (c) { /* Switches from the Intel assembler. */ @@ -6184,6 +6344,13 @@ IA-64 options:\n\ stream); } +void +ia64_after_parse_args () +{ + if (debug_type == DEBUG_STABS) + as_fatal (_("--gstabs is not supported for ia64")); +} + /* Return true if TYPE fits in TEMPL at SLOT. */ static int @@ -6274,6 +6441,10 @@ md_begin () symbol_new (".<ltoff.fptr>", undefined_section, FUNC_LT_FPTR_RELATIVE, &zero_address_frag); + pseudo_func[FUNC_IPLT_RELOC].u.sym = + symbol_new (".<iplt>", undefined_section, FUNC_IPLT_RELOC, + &zero_address_frag); + /* Compute the table of best templates. We compute goodness as a base 4 value, in which each match counts for 3, each F counts for 2, each B counts for 1. This should maximize the number of @@ -6446,6 +6617,19 @@ md_begin () if (! ok) as_warn (_("Could not set architecture and machine")); + /* Set the pointer size and pointer shift size depending on md.flags */ + + if (md.flags & EF_IA_64_ABI64) + { + md.pointer_size = 8; /* pointers are 8 bytes */ + md.pointer_size_shift = 3; /* alignment is 8 bytes = 2^2 */ + } + else + { + md.pointer_size = 4; /* pointers are 4 bytes */ + md.pointer_size_shift = 2; /* alignment is 4 bytes = 2^2 */ + } + md.mem_offset.hint = 0; md.path = 0; md.maxpaths = 0; @@ -6462,9 +6646,7 @@ ia64_init (argc, argv) int argc ATTRIBUTE_UNUSED; char **argv ATTRIBUTE_UNUSED; { - md.flags = EF_IA_64_ABI64; - if (TARGET_BYTES_BIG_ENDIAN) - md.flags |= EF_IA_64_BE; + md.flags = MD_FLAGS_DEFAULT; } /* Return a string for the target object file format. */ @@ -6477,16 +6659,36 @@ ia64_target_format () if (md.flags & EF_IA_64_BE) { if (md.flags & EF_IA_64_ABI64) +#if defined(TE_AIX50) + return "elf64-ia64-aix-big"; +#elif defined(TE_HPUX) + return "elf64-ia64-hpux-big"; +#else return "elf64-ia64-big"; +#endif else +#if defined(TE_AIX50) + return "elf32-ia64-aix-big"; +#elif defined(TE_HPUX) + return "elf32-ia64-hpux-big"; +#else return "elf32-ia64-big"; +#endif } else { if (md.flags & EF_IA_64_ABI64) +#ifdef TE_AIX50 + return "elf64-ia64-aix-little"; +#else return "elf64-ia64-little"; +#endif else +#ifdef TE_AIX50 + return "elf32-ia64-aix-little"; +#else return "elf32-ia64-little"; +#endif } } else @@ -6621,10 +6823,10 @@ ia64_unrecognized_line (ch) c = get_symbol_end (); } else if (LOCAL_LABELS_FB - && isdigit ((unsigned char) *input_line_pointer)) + && ISDIGIT (*input_line_pointer)) { temp = 0; - while (isdigit ((unsigned char) *input_line_pointer)) + while (ISDIGIT (*input_line_pointer)) temp = (temp * 10) + *input_line_pointer++ - '0'; fb_label_instance_inc (temp); s = fb_label_name (temp, 0); @@ -6797,7 +6999,7 @@ ia64_parse_name (name, e) switch (name[0]) { case 'i': - if (name[1] == 'n' && isdigit (name[2])) + if (name[1] == 'n' && ISDIGIT (name[2])) { dr = &md.in; name += 2; @@ -6805,7 +7007,7 @@ ia64_parse_name (name, e) break; case 'l': - if (name[1] == 'o' && name[2] == 'c' && isdigit (name[3])) + if (name[1] == 'o' && name[2] == 'c' && ISDIGIT (name[3])) { dr = &md.loc; name += 3; @@ -6813,7 +7015,7 @@ ia64_parse_name (name, e) break; case 'o': - if (name[1] == 'u' && name[2] == 't' && isdigit (name[3])) + if (name[1] == 'u' && name[2] == 't' && ISDIGIT (name[3])) { dr = &md.out; name += 3; @@ -6870,19 +7072,29 @@ ia64_canonicalize_symbol_name (name) return name; } -/* Return true if idesc is a conditional branch instruction. */ +/* Return true if idesc is a conditional branch instruction. This excludes + the modulo scheduled branches, and br.ia. Mod-sched branches are excluded + because they always read/write resources regardless of the value of the + qualifying predicate. br.ia must always use p0, and hence is always + taken. Thus this function returns true for branches which can fall + through, and which use no resources if they do fall through. */ static int is_conditional_branch (idesc) struct ia64_opcode *idesc; { /* br is a conditional branch. Everything that starts with br. except - br.ia is a conditional branch. Everything that starts with brl is a - conditional branch. */ + br.ia, br.c{loop,top,exit}, and br.w{top,exit} is a conditional branch. + Everything that starts with brl is a conditional branch. */ return (idesc->name[0] == 'b' && idesc->name[1] == 'r' && (idesc->name[2] == '\0' - || (idesc->name[2] == '.' && idesc->name[3] != 'i') - || idesc->name[2] == 'l')); + || (idesc->name[2] == '.' && idesc->name[3] != 'i' + && idesc->name[3] != 'c' && idesc->name[3] != 'w') + || idesc->name[2] == 'l' + /* br.cond, br.call, br.clr */ + || (idesc->name[2] == '.' && idesc->name[3] == 'c' + && (idesc->name[4] == 'a' || idesc->name[4] == 'o' + || (idesc->name[4] == 'l' && idesc->name[5] == 'r'))))); } /* Return whether the given opcode is a taken branch. If there's any doubt, @@ -7616,8 +7828,8 @@ dep->name, idesc->name, (rsrc_write?"write":"read"), note) { int p1 = CURR_SLOT.opnd[0].X_add_number - REG_P; int p2 = CURR_SLOT.opnd[1].X_add_number - REG_P; - int or_andcm = strstr(idesc->name, "or.andcm") != NULL; - int and_orcm = strstr(idesc->name, "and.orcm") != NULL; + int or_andcm = strstr (idesc->name, "or.andcm") != NULL; + int and_orcm = strstr (idesc->name, "and.orcm") != NULL; if ((idesc->operands[0] == IA64_OPND_P1 || idesc->operands[0] == IA64_OPND_P2) @@ -7738,8 +7950,8 @@ dep->name, idesc->name, (rsrc_write?"write":"read"), note) { int p1 = CURR_SLOT.opnd[0].X_add_number - REG_P; int p2 = CURR_SLOT.opnd[1].X_add_number - REG_P; - int or_andcm = strstr(idesc->name, "or.andcm") != NULL; - int and_orcm = strstr(idesc->name, "and.orcm") != NULL; + int or_andcm = strstr (idesc->name, "or.andcm") != NULL; + int and_orcm = strstr (idesc->name, "and.orcm") != NULL; if ((idesc->operands[0] == IA64_OPND_P1 || idesc->operands[0] == IA64_OPND_P2) @@ -8201,8 +8413,8 @@ dep->name, idesc->name, (rsrc_write?"write":"read"), note) { int p1 = CURR_SLOT.opnd[0].X_add_number - REG_P; int p2 = CURR_SLOT.opnd[1].X_add_number - REG_P; - int or_andcm = strstr(idesc->name, "or.andcm") != NULL; - int and_orcm = strstr(idesc->name, "and.orcm") != NULL; + int or_andcm = strstr (idesc->name, "or.andcm") != NULL; + int and_orcm = strstr (idesc->name, "and.orcm") != NULL; if (p1 == 63 && (idesc->operands[0] == IA64_OPND_P1 @@ -8453,6 +8665,19 @@ add_qp_mutex (mask) qp_mutexes[qp_mutexeslen++].prmask = mask; } +static int +has_suffix_p (name, suffix) + const char *name; + const char *suffix; +{ + size_t namelen = strlen (name); + size_t sufflen = strlen (suffix); + + if (namelen <= sufflen) + return 0; + return strcmp (name + namelen - sufflen, suffix) == 0; +} + static void clear_register_values () { @@ -8570,21 +8795,19 @@ note_register_values (idesc) } /* In general, clear mutexes and implies which include P1 or P2, with the following exceptions. */ - else if (strstr (idesc->name, ".or.andcm") != NULL) + else if (has_suffix_p (idesc->name, ".or.andcm") + || has_suffix_p (idesc->name, ".and.orcm")) { add_qp_mutex (p1mask | p2mask); clear_qp_implies (p2mask, p1mask); } - else if (strstr (idesc->name, ".and.orcm") != NULL) - { - add_qp_mutex (p1mask | p2mask); - clear_qp_implies (p1mask, p2mask); - } - else if (strstr (idesc->name, ".and") != NULL) + else if (has_suffix_p (idesc->name, ".andcm") + || has_suffix_p (idesc->name, ".and")) { clear_qp_implies (0, p1mask | p2mask); } - else if (strstr (idesc->name, ".or") != NULL) + else if (has_suffix_p (idesc->name, ".orcm") + || has_suffix_p (idesc->name, ".or")) { clear_qp_mutex (p1mask | p2mask); clear_qp_implies (p1mask | p2mask, 0); @@ -8592,7 +8815,7 @@ note_register_values (idesc) else { clear_qp_implies (p1mask | p2mask, p1mask | p2mask); - if (strstr (idesc->name, ".unc") != NULL) + if (has_suffix_p (idesc->name, ".unc")) { add_qp_mutex (p1mask | p2mask); if (CURR_SLOT.qp_regno != 0) @@ -9680,6 +9903,21 @@ ia64_cons_fix_new (f, where, nbytes, exp) code = BFD_RELOC_IA64_DIR64LSB; break; + case 16: + if (exp->X_op == O_pseudo_fixup + && exp->X_op_symbol + && S_GET_VALUE (exp->X_op_symbol) == FUNC_IPLT_RELOC) + { + if (target_big_endian) + code = BFD_RELOC_IA64_IPLTMSB; + else + code = BFD_RELOC_IA64_IPLTLSB; + + exp->X_op = O_symbol; + break; + } + /* FALLTHRU */ + default: as_bad ("Unsupported fixup size %d", nbytes); ignore_rest_of_line (); @@ -9691,10 +9929,11 @@ ia64_cons_fix_new (f, where, nbytes, exp) exp->X_op = O_symbol; code = ia64_gen_real_reloc_type (exp->X_op_symbol, code); } + fix = fix_new_exp (f, where, nbytes, exp, 0, code); /* We need to store the byte order in effect in case we're going to fix an 8 or 16 bit relocation (for which there no real - relocs available). See md_apply_fix(). */ + relocs available). See md_apply_fix3(). */ fix->tc_fix_data.bigendian = target_big_endian; } @@ -9818,6 +10057,10 @@ ia64_gen_real_reloc_type (sym, r_type) break; } break; + + case FUNC_IPLT_RELOC: + break; + default: abort (); } @@ -9916,14 +10159,15 @@ fix_insn (fix, odesc, value) If fixp->fx_addsy is non-NULL, we'll have to generate a reloc entry (if possible). */ -int -md_apply_fix3 (fix, valuep, seg) + +void +md_apply_fix3 (fix, valP, seg) fixS *fix; - valueT *valuep; + valueT * valP; segT seg ATTRIBUTE_UNUSED; { char *fixpos; - valueT value = *valuep; + valueT value = * valP; int adjust = 0; fixpos = fix->fx_frag->fr_literal + fix->fx_where; @@ -9958,16 +10202,15 @@ md_apply_fix3 (fix, valuep, seg) } if (fix->fx_addsy) { - switch (fix->fx_r_type) + if (fix->fx_r_type == (int) BFD_RELOC_UNUSED) { - case 0: + /* This must be a TAG13 or TAG13b operand. There are no external + relocs defined for them, so we must give an error. */ as_bad_where (fix->fx_file, fix->fx_line, "%s must have a constant value", elf64_ia64_operands[fix->tc_fix_data.opnd].desc); - break; - - default: - break; + fix->fx_done = 1; + return; } /* ??? This is a hack copied from tc-i386.c to make PCREL relocs @@ -9982,15 +10225,12 @@ md_apply_fix3 (fix, valuep, seg) else number_to_chars_littleendian (fixpos, value, fix->fx_size); fix->fx_done = 1; - return 1; } else { fix_insn (fix, elf64_ia64_operands + fix->tc_fix_data.opnd, value); fix->fx_done = 1; - return 1; } - return 1; } /* Generate the BFD reloc to be stuck in the object file from the diff --git a/contrib/binutils/gas/config/tc-ia64.h b/contrib/binutils/gas/config/tc-ia64.h index 12ae411..53dab86 100644 --- a/contrib/binutils/gas/config/tc-ia64.h +++ b/contrib/binutils/gas/config/tc-ia64.h @@ -1,5 +1,5 @@ /* tc-ia64.h -- Header file for tc-ia64.c. - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by David Mosberger-Tang <davidm@hpl.hp.com> This file is part of GAS, the GNU Assembler. @@ -28,9 +28,11 @@ #ifdef TE_HPUX #define md_number_to_chars number_to_chars_bigendian #define TARGET_BYTES_BIG_ENDIAN 1 +#define MD_FLAGS_DEFAULT EF_IA_64_BE #else #define md_number_to_chars number_to_chars_littleendian #define TARGET_BYTES_BIG_ENDIAN 0 +#define MD_FLAGS_DEFAULT EF_IA_64_ABI64 #endif /* TE_HPUX */ /* We need to set the default object file format in ia64_init and not in @@ -46,7 +48,6 @@ extern const char *ia64_target_format PARAMS ((void)); #define TARGET_ARCH bfd_arch_ia64 #define DOUBLESLASH_LINE_COMMENTS /* allow //-style comments */ -#define TC_HANDLES_FX_DONE #define NEED_LITERAL_POOL /* need gp literal pool */ #define RELOC_REQUIRES_SYMBOL @@ -81,29 +82,32 @@ extern void ia64_cons_fix_new PARAMS ((fragS *f, int where, int nbytes, expressionS *exp)); extern void ia64_validate_fix PARAMS ((struct fix *fix)); extern char * ia64_canonicalize_symbol_name PARAMS ((char *)); +extern int ia64_elf_section_letter PARAMS ((int, char **)); extern flagword ia64_elf_section_flags PARAMS ((flagword, int, int)); extern int ia64_elf_section_type PARAMS ((const char *, size_t len)); extern long ia64_pcrel_from_section PARAMS ((struct fix *fix, segT sec)); extern void ia64_md_do_align PARAMS ((int, const char *, int, int)); extern void ia64_handle_align PARAMS ((fragS *f)); +extern void ia64_after_parse_args PARAMS ((void)); #define md_end() ia64_end_of_source () #define md_start_line_hook() ia64_start_line () #define tc_unrecognized_line(ch) ia64_unrecognized_line (ch) #define tc_frob_label(s) ia64_frob_label (s) #define md_flush_pending_output() ia64_flush_pending_output () -#define md_parse_name(s,e) ia64_parse_name (s, e) +#define md_parse_name(s,e,c) ia64_parse_name (s, e) #define tc_canonicalize_symbol_name(s) ia64_canonicalize_symbol_name (s) #define md_optimize_expr(l,o,r) ia64_optimize_expr (l, o, r) #define md_cons_align(n) ia64_cons_align (n) #define TC_FORCE_RELOCATION(f) ia64_force_relocation (f) #define tc_fix_adjustable(f) ia64_fix_adjustable (f) #define md_convert_frag(b,s,f) as_fatal ("ia64_convert_frag") -#define md_create_long_jump(p,f,t,fr,s) as_fatal("ia64_create_long_jump") +#define md_create_long_jump(p,f,t,fr,s) as_fatal ("ia64_create_long_jump") #define md_create_short_jump(p,f,t,fr,s) \ - as_fatal("ia64_create_short_jump") + as_fatal ("ia64_create_short_jump") #define md_estimate_size_before_relax(f,s) \ (as_fatal ("ia64_estimate_size_before_relax"), 1) +#define md_elf_section_letter ia64_elf_section_letter #define md_elf_section_flags ia64_elf_section_flags #define TC_FIX_TYPE struct ia64_fix #define TC_INIT_FIX_DATA(f) { f->tc_fix_data.opnd = 0; } @@ -113,15 +117,15 @@ extern void ia64_handle_align PARAMS ((fragS *f)); #define md_do_align(n,f,l,m,j) ia64_md_do_align (n,f,l,m) #define HANDLE_ALIGN(f) ia64_handle_align (f) #define md_elf_section_type(str,len) ia64_elf_section_type (str, len) +#define md_after_parse_args() ia64_after_parse_args () #define MAX_MEM_FOR_RS_ALIGN_CODE (15 + 16) -/* Call md_apply_fix3 with segment instead of md_apply_fix. */ -#define MD_APPLY_FIX3 - #define WORKING_DOT_WORD /* don't do broken word processing for now */ #define ELF_TC_SPECIAL_SECTIONS \ +{ ".init_array",SHT_INIT_ARRAY, SHF_ALLOC + SHF_WRITE }, \ +{ ".fini_array",SHT_FINI_ARRAY, SHF_ALLOC + SHF_WRITE }, \ { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_IA_64_SHORT }, \ { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_IA_64_SHORT }, @@ -252,9 +256,12 @@ typedef struct unwind_record True if we are willing to perform this relocation while building the .o file. This is only used for pcrel relocations. */ +/* If the reloc type is BFD_RELOC_UNUSED, then this is for a TAG13/TAG13b field + which has no external reloc, so we must resolve the value now. */ + #define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \ ((FIX)->fx_addsy == NULL \ - || (FIX)->fx_r_type == 0 \ + || (FIX)->fx_r_type == BFD_RELOC_UNUSED \ || (! S_IS_EXTERNAL ((FIX)->fx_addsy) \ && ! S_IS_WEAK ((FIX)->fx_addsy) \ && S_IS_DEFINED ((FIX)->fx_addsy) \ diff --git a/contrib/binutils/gas/config/tc-ppc.c b/contrib/binutils/gas/config/tc-ppc.c index ef70871..8bf09db 100644 --- a/contrib/binutils/gas/config/tc-ppc.c +++ b/contrib/binutils/gas/config/tc-ppc.c @@ -21,8 +21,8 @@ 02111-1307, USA. */ #include <stdio.h> -#include <ctype.h> #include "as.h" +#include "safe-ctype.h" #include "subsegs.h" #include "opcode/ppc.h" @@ -53,6 +53,36 @@ static int set_target_endian = 0; #endif #endif +/* Macros for calculating LO, HI, HA, HIGHER, HIGHERA, HIGHEST, + HIGHESTA. */ + +/* #lo(value) denotes the least significant 16 bits of the indicated. */ +#define PPC_LO(v) ((v) & 0xffff) + +/* #hi(value) denotes bits 16 through 31 of the indicated value. */ +#define PPC_HI(v) (((v) >> 16) & 0xffff) + +/* #ha(value) denotes the high adjusted value: bits 16 through 31 of + the indicated value, compensating for #lo() being treated as a + signed number. */ +#define PPC_HA(v) PPC_HI ((v) + 0x8000) + +/* #higher(value) denotes bits 32 through 47 of the indicated value. */ +#define PPC_HIGHER(v) (((v) >> 32) & 0xffff) + +/* #highera(value) denotes bits 32 through 47 of the indicated value, + compensating for #lo() being treated as a signed number. */ +#define PPC_HIGHERA(v) PPC_HIGHER ((v) + 0x8000) + +/* #highest(value) denotes bits 48 through 63 of the indicated value. */ +#define PPC_HIGHEST(v) (((v) >> 48) & 0xffff) + +/* #highesta(value) denotes bits 48 through 63 of the indicated value, + compensating for #lo being treated as a signed number. */ +#define PPC_HIGHESTA(v) PPC_HIGHEST ((v) + 0x8000) + +#define SEX16(val) ((((val) & 0xffff) ^ 0x8000) - 0x8000) + static boolean reg_names_p = TARGET_REG_NAMES_P; static boolean register_name PARAMS ((expressionS *)); @@ -62,8 +92,12 @@ static unsigned long ppc_insert_operand offsetT val, char *file, unsigned int line)); static void ppc_macro PARAMS ((char *str, const struct powerpc_macro *macro)); static void ppc_byte PARAMS ((int)); + +#if defined (OBJ_XCOFF) || defined (OBJ_ELF) static int ppc_is_toc_sym PARAMS ((symbolS *sym)); static void ppc_tc PARAMS ((int)); +static void ppc_machine PARAMS ((int)); +#endif #ifdef OBJ_XCOFF static void ppc_comm PARAMS ((int)); @@ -87,7 +121,6 @@ static void ppc_stabx PARAMS ((int)); static void ppc_rename PARAMS ((int)); static void ppc_toc PARAMS ((int)); static void ppc_xcoff_cons PARAMS ((int)); -static void ppc_machine PARAMS ((int)); static void ppc_vbyte PARAMS ((int)); #endif @@ -188,10 +221,11 @@ const pseudo_typeS md_pseudo_table[] = { "word", ppc_xcoff_cons, 1 }, { "short", ppc_xcoff_cons, 1 }, { "vbyte", ppc_vbyte, 0 }, - { "machine", ppc_machine, 0 }, #endif #ifdef OBJ_ELF + { "llong", ppc_elf_cons, 8 }, + { "quad", ppc_elf_cons, 8 }, { "long", ppc_elf_cons, 4 }, { "word", ppc_elf_cons, 2 }, { "short", ppc_elf_cons, 2 }, @@ -203,7 +237,7 @@ const pseudo_typeS md_pseudo_table[] = #endif #ifdef TE_PE - /* Pseudo-ops specific to the Windows NT PowerPC PE (coff) format */ + /* Pseudo-ops specific to the Windows NT PowerPC PE (coff) format. */ { "previous", ppc_previous, 0 }, { "pdata", ppc_pdata, 0 }, { "ydata", ppc_ydata, 0 }, @@ -218,16 +252,18 @@ const pseudo_typeS md_pseudo_table[] = { "tocd", ppc_pe_tocd, 0 }, #endif - /* This pseudo-op is used even when not generating XCOFF output. */ +#if defined (OBJ_XCOFF) || defined (OBJ_ELF) { "tc", ppc_tc, 0 }, + { "machine", ppc_machine, 0 }, +#endif { NULL, NULL, 0 } }; -/* Predefined register names if -mregnames (or default for Windows NT). */ -/* In general, there are lots of them, in an attempt to be compatible */ -/* with a number of other Windows NT assemblers. */ +/* Predefined register names if -mregnames (or default for Windows NT). + In general, there are lots of them, in an attempt to be compatible + with a number of other Windows NT assemblers. */ /* Structure to hold information about predefined registers. */ struct pd_reg @@ -555,7 +591,7 @@ reg_name_search (regs, regcount, name) } /* - * Summary of register_name(). + * Summary of register_name. * * in: Input_line_pointer points to 1st char of operand. * @@ -575,36 +611,35 @@ register_name (expressionP) char *start; char c; - /* Find the spelling of the operand */ + /* Find the spelling of the operand. */ start = name = input_line_pointer; - if (name[0] == '%' && isalpha (name[1])) + if (name[0] == '%' && ISALPHA (name[1])) name = ++input_line_pointer; - else if (!reg_names_p || !isalpha (name[0])) + else if (!reg_names_p || !ISALPHA (name[0])) return false; c = get_symbol_end (); reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT, name); - /* look to see if it's in the register table */ + /* Put back the delimiting char. */ + *input_line_pointer = c; + + /* Look to see if it's in the register table. */ if (reg_number >= 0) { expressionP->X_op = O_register; expressionP->X_add_number = reg_number; - /* make the rest nice */ + /* Make the rest nice. */ expressionP->X_add_symbol = NULL; expressionP->X_op_symbol = NULL; - *input_line_pointer = c; /* put back the delimiting char */ return true; } - else - { - /* reset the line as if we had not done anything */ - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ - return false; - } + + /* Reset the line as if we had not done anything. */ + input_line_pointer = start; + return false; } /* This function is called for each symbol seen in an expression. It @@ -664,9 +699,11 @@ static int ppc_cpu = 0; /* The size of the processor we are assembling for. This is either PPC_OPCODE_32 or PPC_OPCODE_64. */ -static unsigned long ppc_size = PPC_OPCODE_32; +static unsigned long ppc_size = (BFD_DEFAULT_TARGET_SIZE == 64 + ? PPC_OPCODE_64 + : PPC_OPCODE_32); -/* Whether to target xcoff64 */ +/* Whether to target xcoff64. */ static int ppc_xcoff64 = 0; /* Opcode hash table. */ @@ -676,10 +713,10 @@ static struct hash_control *ppc_hash; static struct hash_control *ppc_macro_hash; #ifdef OBJ_ELF -/* What type of shared library support to use */ +/* What type of shared library support to use. */ static enum { SHLIB_NONE, SHLIB_PIC, SHLIB_MRELOCATABLE } shlib = SHLIB_NONE; -/* Flags to set in the elf header */ +/* Flags to set in the elf header. */ static flagword ppc_flags = 0; /* Whether this is Solaris or not. */ @@ -759,14 +796,14 @@ symbolS *GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE" */ #endif /* OBJ_ELF */ #ifdef OBJ_ELF -CONST char *md_shortopts = "b:l:usm:K:VQ:"; +const char *const md_shortopts = "b:l:usm:K:VQ:"; #else -CONST char *md_shortopts = "um:"; +const char *const md_shortopts = "um:"; #endif -struct option md_longopts[] = { +const struct option md_longopts[] = { {NULL, no_argument, NULL, 0} }; -size_t md_longopts_size = sizeof (md_longopts); +const size_t md_longopts_size = sizeof (md_longopts); int md_parse_option (c, arg) @@ -783,7 +820,7 @@ md_parse_option (c, arg) #ifdef OBJ_ELF case 'l': /* Solaris as takes -le (presumably for little endian). For completeness - sake, recognize -be also. */ + sake, recognize -be also. */ if (strcmp (arg, "e") == 0) { target_big_endian = 0; @@ -806,7 +843,7 @@ md_parse_option (c, arg) break; case 'K': - /* Recognize -K PIC */ + /* Recognize -K PIC. */ if (strcmp (arg, "PIC") == 0 || strcmp (arg, "pic") == 0) { shlib = SHLIB_PIC; @@ -829,38 +866,63 @@ md_parse_option (c, arg) break; case 'm': + /* Most CPU's are 32 bit. Exceptions are listed below. */ + ppc_size = PPC_OPCODE_32; + /* -mpwrx and -mpwr2 mean to assemble for the IBM POWER/2 - (RIOS2). */ + (RIOS2). */ if (strcmp (arg, "pwrx") == 0 || strcmp (arg, "pwr2") == 0) ppc_cpu = PPC_OPCODE_POWER | PPC_OPCODE_POWER2; /* -mpwr means to assemble for the IBM POWER (RIOS1). */ else if (strcmp (arg, "pwr") == 0) ppc_cpu = PPC_OPCODE_POWER; /* -m601 means to assemble for the Motorola PowerPC 601, which includes - instructions that are holdovers from the Power. */ + instructions that are holdovers from the Power. */ else if (strcmp (arg, "601") == 0) ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_601; /* -mppc, -mppc32, -m603, and -m604 mean to assemble for the - Motorola PowerPC 603/604. */ + Motorola PowerPC 603/604. */ else if (strcmp (arg, "ppc") == 0 || strcmp (arg, "ppc32") == 0 - || strcmp (arg, "403") == 0 - || strcmp (arg, "405") == 0 || strcmp (arg, "603") == 0 || strcmp (arg, "604") == 0) ppc_cpu = PPC_OPCODE_PPC; - else if (strcmp (arg, "7400") == 0) - ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_ALTIVEC; + /* -m403 and -m405 mean to assemble for the Motorola PowerPC 403/405. */ + else if (strcmp (arg, "403") == 0 + || strcmp (arg, "405") == 0) + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_403; + else if (strcmp (arg, "7400") == 0 + || strcmp (arg, "7410") == 0 + || strcmp (arg, "7450") == 0 + || strcmp (arg, "7455") == 0) + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_ALTIVEC; + else if (strcmp (arg, "altivec") == 0) + { + if (ppc_cpu == 0) + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_ALTIVEC; + else + ppc_cpu |= PPC_OPCODE_ALTIVEC; + } /* -mppc64 and -m620 mean to assemble for the 64-bit PowerPC - 620. */ + 620. */ else if (strcmp (arg, "ppc64") == 0 || strcmp (arg, "620") == 0) { - ppc_cpu = PPC_OPCODE_PPC; + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_64; ppc_size = PPC_OPCODE_64; } else if (strcmp (arg, "ppc64bridge") == 0) { - ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_64_BRIDGE; + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_64_BRIDGE | PPC_OPCODE_64; + ppc_size = PPC_OPCODE_64; + } + /* -mbooke/-mbooke32 mean enable 32-bit BookE support. */ + else if (strcmp (arg, "booke") == 0 || strcmp (arg, "booke32") == 0) + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_BOOKE; + /* -mbooke64 means enable 64-bit BookE support. */ + else if (strcmp (arg, "booke64") == 0) + { + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_BOOKE | + PPC_OPCODE_BOOKE64 | PPC_OPCODE_64; ppc_size = PPC_OPCODE_64; } /* -mcom means assemble for the common intersection between Power @@ -879,7 +941,8 @@ md_parse_option (c, arg) reg_names_p = false; #ifdef OBJ_ELF - /* -mrelocatable/-mrelocatable-lib -- warn about initializations that require relocation */ + /* -mrelocatable/-mrelocatable-lib -- warn about initializations + that require relocation. */ else if (strcmp (arg, "relocatable") == 0) { shlib = SHLIB_MRELOCATABLE; @@ -892,12 +955,13 @@ md_parse_option (c, arg) ppc_flags |= EF_PPC_RELOCATABLE_LIB; } - /* -memb, set embedded bit */ + /* -memb, set embedded bit. */ else if (strcmp (arg, "emb") == 0) ppc_flags |= EF_PPC_EMB; - /* -mlittle/-mbig set the endianess */ - else if (strcmp (arg, "little") == 0 || strcmp (arg, "little-endian") == 0) + /* -mlittle/-mbig set the endianess. */ + else if (strcmp (arg, "little") == 0 + || strcmp (arg, "little-endian") == 0) { target_big_endian = 0; set_target_endian = 1; @@ -966,10 +1030,16 @@ PowerPC options:\n\ -mpwrx, -mpwr2 generate code for IBM POWER/2 (RIOS2)\n\ -mpwr generate code for IBM POWER (RIOS1)\n\ -m601 generate code for Motorola PowerPC 601\n\ --mppc, -mppc32, -m403, -m405, -m603, -m604\n\ +-mppc, -mppc32, -m603, -m604\n\ generate code for Motorola PowerPC 603/604\n\ +-m403, -m405 generate code for Motorola PowerPC 403/405\n\ +-m7400, -m7410, -m7450, -m7455\n\ + generate code For Motorola PowerPC 7400/7410/7450/7455\n\ -mppc64, -m620 generate code for Motorola PowerPC 620\n\ -mppc64bridge generate code for PowerPC 64, including bridge insns\n\ +-mbooke64 generate code for 64-bit PowerPC BookE\n\ +-mbooke, mbooke32 generate code for 32-bit PowerPC BookE\n\ +-maltivec generate code for AltiVec\n\ -mcom generate code Power/PowerPC common instructions\n\ -many generate code for any architecture (PWR/PWRX/PPC)\n\ -mregnames Allow symbolic names for registers\n\ @@ -1006,11 +1076,11 @@ ppc_set_cpu () ppc_cpu = PPC_OPCODE_POWER; else if (strcmp (default_cpu, "rs6000") == 0) ppc_cpu = PPC_OPCODE_POWER; - else if (strcmp (default_cpu, "powerpc") == 0 - || strcmp (default_cpu, "powerpcle") == 0) + else if (strncmp (default_cpu, "powerpc", 7) == 0) ppc_cpu = PPC_OPCODE_PPC; else - as_fatal (_("Unknown default cpu = %s, os = %s"), default_cpu, default_os); + as_fatal (_("Unknown default cpu = %s, os = %s"), + default_cpu, default_os); } } @@ -1030,8 +1100,7 @@ ppc_arch () { if (strcmp (default_cpu, "rs6000") == 0) return bfd_arch_rs6000; - else if (strcmp (default_cpu, "powerpc") == 0 - || strcmp (default_cpu, "powerpcle") == 0) + else if (strncmp (default_cpu, "powerpc", 7) == 0) return bfd_arch_powerpc; } @@ -1042,31 +1111,35 @@ ppc_arch () unsigned long ppc_mach () { - return (ppc_size == PPC_OPCODE_64) ? 620 : 0; + return ppc_size == PPC_OPCODE_64 ? 620 : 0; } +#ifdef OBJ_XCOFF int -ppc_subseg_align() +ppc_subseg_align () { - return (ppc_xcoff64) ? 3 : 2; + return ppc_xcoff64 ? 3 : 2; } +#endif extern char* -ppc_target_format() +ppc_target_format () { #ifdef OBJ_COFF #ifdef TE_PE - return (target_big_endian ? "pe-powerpc" : "pe-powerpcle"); + return target_big_endian ? "pe-powerpc" : "pe-powerpcle"; #elif TE_POWERMAC -#else - return (ppc_xcoff64 ? "aixcoff64-rs6000" : "aixcoff-rs6000"); -#endif -#ifdef TE_POWERMAC return "xcoff-powermac"; +#else + return ppc_xcoff64 ? "aixcoff64-rs6000" : "aixcoff-rs6000"; #endif #endif #ifdef OBJ_ELF - return (target_big_endian ? "elf32-powerpc" : "elf32-powerpcle"); + boolean is64 = BFD_DEFAULT_TARGET_SIZE == 64 && ppc_size == PPC_OPCODE_64; + + return (target_big_endian + ? (is64 ? "elf64-powerpc" : "elf32-powerpc") + : (is64 ? "elf64-powerpcle" : "elf32-powerpcle")); #endif } @@ -1109,12 +1182,13 @@ md_begin () retval = hash_insert (ppc_hash, op->name, (PTR) op); if (retval != (const char *) NULL) { - /* Ignore Power duplicates for -m601 */ + /* Ignore Power duplicates for -m601. */ if ((ppc_cpu & PPC_OPCODE_601) != 0 && (op->flags & PPC_OPCODE_POWER) != 0) continue; - as_bad (_("Internal assembler error for instruction %s"), op->name); + as_bad (_("Internal assembler error for instruction %s"), + op->name); dup_insn = true; } } @@ -1142,7 +1216,8 @@ md_begin () if (dup_insn) abort (); - /* Tell the main code what the endianness is if it is not overidden by the user. */ + /* Tell the main code what the endianness is if it is not overidden + by the user. */ if (!set_target_endian) { set_target_endian = 1; @@ -1225,10 +1300,7 @@ ppc_insert_operand (insn, operand, val, file, line) char buf[100]; sprint_value (buf, test); - if (file == (char *) NULL) - as_bad (err, buf, min, max); - else - as_bad_where (file, line, err, buf, min, max); + as_bad_where (file, line, err, buf, min, max); } } @@ -1237,9 +1309,9 @@ ppc_insert_operand (insn, operand, val, file, line) const char *errmsg; errmsg = NULL; - insn = (*operand->insert) (insn, (long) val, &errmsg); + insn = (*operand->insert) (insn, (long) val, ppc_cpu | ppc_size, &errmsg); if (errmsg != (const char *) NULL) - as_bad (errmsg); + as_bad_where (file, line, errmsg); } else insn |= (((long) val & ((1 << operand->bits) - 1)) @@ -1259,7 +1331,7 @@ ppc_elf_suffix (str_p, exp_p) struct map_bfd { char *string; int length; - bfd_reloc_code_real_type reloc; + int reloc; }; char ident[20]; @@ -1267,55 +1339,65 @@ ppc_elf_suffix (str_p, exp_p) char *str2; int ch; int len; - struct map_bfd *ptr; + const struct map_bfd *ptr; #define MAP(str,reloc) { str, sizeof (str)-1, reloc } - static struct map_bfd mapping[] = { - MAP ("l", BFD_RELOC_LO16), - MAP ("h", BFD_RELOC_HI16), - MAP ("ha", BFD_RELOC_HI16_S), - MAP ("brtaken", BFD_RELOC_PPC_B16_BRTAKEN), - MAP ("brntaken", BFD_RELOC_PPC_B16_BRNTAKEN), - MAP ("got", BFD_RELOC_16_GOTOFF), - MAP ("got@l", BFD_RELOC_LO16_GOTOFF), - MAP ("got@h", BFD_RELOC_HI16_GOTOFF), - MAP ("got@ha", BFD_RELOC_HI16_S_GOTOFF), - MAP ("fixup", BFD_RELOC_CTOR), /* warnings with -mrelocatable */ - MAP ("plt", BFD_RELOC_24_PLT_PCREL), - MAP ("pltrel24", BFD_RELOC_24_PLT_PCREL), - MAP ("copy", BFD_RELOC_PPC_COPY), - MAP ("globdat", BFD_RELOC_PPC_GLOB_DAT), - MAP ("local24pc", BFD_RELOC_PPC_LOCAL24PC), - MAP ("local", BFD_RELOC_PPC_LOCAL24PC), - MAP ("pltrel", BFD_RELOC_32_PLT_PCREL), - MAP ("plt@l", BFD_RELOC_LO16_PLTOFF), - MAP ("plt@h", BFD_RELOC_HI16_PLTOFF), - MAP ("plt@ha", BFD_RELOC_HI16_S_PLTOFF), - MAP ("sdarel", BFD_RELOC_GPREL16), - MAP ("sectoff", BFD_RELOC_32_BASEREL), - MAP ("sectoff@l", BFD_RELOC_LO16_BASEREL), - MAP ("sectoff@h", BFD_RELOC_HI16_BASEREL), - MAP ("sectoff@ha", BFD_RELOC_HI16_S_BASEREL), - MAP ("naddr", BFD_RELOC_PPC_EMB_NADDR32), - MAP ("naddr16", BFD_RELOC_PPC_EMB_NADDR16), - MAP ("naddr@l", BFD_RELOC_PPC_EMB_NADDR16_LO), - MAP ("naddr@h", BFD_RELOC_PPC_EMB_NADDR16_HI), - MAP ("naddr@ha", BFD_RELOC_PPC_EMB_NADDR16_HA), - MAP ("sdai16", BFD_RELOC_PPC_EMB_SDAI16), - MAP ("sda2rel", BFD_RELOC_PPC_EMB_SDA2REL), - MAP ("sda2i16", BFD_RELOC_PPC_EMB_SDA2I16), - MAP ("sda21", BFD_RELOC_PPC_EMB_SDA21), - MAP ("mrkref", BFD_RELOC_PPC_EMB_MRKREF), - MAP ("relsect", BFD_RELOC_PPC_EMB_RELSEC16), - MAP ("relsect@l", BFD_RELOC_PPC_EMB_RELST_LO), - MAP ("relsect@h", BFD_RELOC_PPC_EMB_RELST_HI), - MAP ("relsect@ha", BFD_RELOC_PPC_EMB_RELST_HA), - MAP ("bitfld", BFD_RELOC_PPC_EMB_BIT_FLD), - MAP ("relsda", BFD_RELOC_PPC_EMB_RELSDA), - MAP ("xgot", BFD_RELOC_PPC_TOC16), - - { (char *)0, 0, BFD_RELOC_UNUSED } + static const struct map_bfd mapping[] = { + MAP ("l", (int) BFD_RELOC_LO16), + MAP ("h", (int) BFD_RELOC_HI16), + MAP ("ha", (int) BFD_RELOC_HI16_S), + MAP ("brtaken", (int) BFD_RELOC_PPC_B16_BRTAKEN), + MAP ("brntaken", (int) BFD_RELOC_PPC_B16_BRNTAKEN), + MAP ("got", (int) BFD_RELOC_16_GOTOFF), + MAP ("got@l", (int) BFD_RELOC_LO16_GOTOFF), + MAP ("got@h", (int) BFD_RELOC_HI16_GOTOFF), + MAP ("got@ha", (int) BFD_RELOC_HI16_S_GOTOFF), + MAP ("fixup", (int) BFD_RELOC_CTOR), /* warning with -mrelocatable */ + MAP ("plt", (int) BFD_RELOC_24_PLT_PCREL), + MAP ("pltrel24", (int) BFD_RELOC_24_PLT_PCREL), + MAP ("copy", (int) BFD_RELOC_PPC_COPY), + MAP ("globdat", (int) BFD_RELOC_PPC_GLOB_DAT), + MAP ("local24pc", (int) BFD_RELOC_PPC_LOCAL24PC), + MAP ("local", (int) BFD_RELOC_PPC_LOCAL24PC), + MAP ("pltrel", (int) BFD_RELOC_32_PLT_PCREL), + MAP ("plt@l", (int) BFD_RELOC_LO16_PLTOFF), + MAP ("plt@h", (int) BFD_RELOC_HI16_PLTOFF), + MAP ("plt@ha", (int) BFD_RELOC_HI16_S_PLTOFF), + MAP ("sdarel", (int) BFD_RELOC_GPREL16), + MAP ("sectoff", (int) BFD_RELOC_32_BASEREL), + MAP ("sectoff@l", (int) BFD_RELOC_LO16_BASEREL), + MAP ("sectoff@h", (int) BFD_RELOC_HI16_BASEREL), + MAP ("sectoff@ha", (int) BFD_RELOC_HI16_S_BASEREL), + MAP ("naddr", (int) BFD_RELOC_PPC_EMB_NADDR32), + MAP ("naddr16", (int) BFD_RELOC_PPC_EMB_NADDR16), + MAP ("naddr@l", (int) BFD_RELOC_PPC_EMB_NADDR16_LO), + MAP ("naddr@h", (int) BFD_RELOC_PPC_EMB_NADDR16_HI), + MAP ("naddr@ha", (int) BFD_RELOC_PPC_EMB_NADDR16_HA), + MAP ("sdai16", (int) BFD_RELOC_PPC_EMB_SDAI16), + MAP ("sda2rel", (int) BFD_RELOC_PPC_EMB_SDA2REL), + MAP ("sda2i16", (int) BFD_RELOC_PPC_EMB_SDA2I16), + MAP ("sda21", (int) BFD_RELOC_PPC_EMB_SDA21), + MAP ("mrkref", (int) BFD_RELOC_PPC_EMB_MRKREF), + MAP ("relsect", (int) BFD_RELOC_PPC_EMB_RELSEC16), + MAP ("relsect@l", (int) BFD_RELOC_PPC_EMB_RELST_LO), + MAP ("relsect@h", (int) BFD_RELOC_PPC_EMB_RELST_HI), + MAP ("relsect@ha", (int) BFD_RELOC_PPC_EMB_RELST_HA), + MAP ("bitfld", (int) BFD_RELOC_PPC_EMB_BIT_FLD), + MAP ("relsda", (int) BFD_RELOC_PPC_EMB_RELSDA), + MAP ("xgot", (int) BFD_RELOC_PPC_TOC16), +#if BFD_DEFAULT_TARGET_SIZE == 64 + MAP ("higher", - (int) BFD_RELOC_PPC64_HIGHER), + MAP ("highera", - (int) BFD_RELOC_PPC64_HIGHER_S), + MAP ("highest", - (int) BFD_RELOC_PPC64_HIGHEST), + MAP ("highesta", - (int) BFD_RELOC_PPC64_HIGHEST_S), + MAP ("tocbase", - (int) BFD_RELOC_PPC64_TOC), + MAP ("toc", - (int) BFD_RELOC_PPC_TOC16), + MAP ("toc@l", - (int) BFD_RELOC_PPC64_TOC16_LO), + MAP ("toc@h", - (int) BFD_RELOC_PPC64_TOC16_HI), + MAP ("toc@ha", - (int) BFD_RELOC_PPC64_TOC16_HA), +#endif + { (char *) 0, 0, (int) BFD_RELOC_UNUSED } }; if (*str++ != '@') @@ -1323,10 +1405,10 @@ ppc_elf_suffix (str_p, exp_p) for (ch = *str, str2 = ident; (str2 < ident + sizeof (ident) - 1 - && (isalnum (ch) || ch == '@')); + && (ISALNUM (ch) || ch == '@')); ch = *++str) { - *str2++ = (islower (ch)) ? ch : tolower (ch); + *str2++ = TOLOWER (ch); } *str2 = '\0'; @@ -1338,14 +1420,23 @@ ppc_elf_suffix (str_p, exp_p) && len == ptr->length && memcmp (ident, ptr->string, ptr->length) == 0) { + int reloc = ptr->reloc; + + if (BFD_DEFAULT_TARGET_SIZE == 64 && reloc < 0) + { + if (ppc_size != PPC_OPCODE_64) + return BFD_RELOC_UNUSED; + reloc = -reloc; + } + if (exp_p->X_add_number != 0 - && (ptr->reloc == BFD_RELOC_16_GOTOFF - || ptr->reloc == BFD_RELOC_LO16_GOTOFF - || ptr->reloc == BFD_RELOC_HI16_GOTOFF - || ptr->reloc == BFD_RELOC_HI16_S_GOTOFF)) + && (reloc == (int) BFD_RELOC_16_GOTOFF + || reloc == (int) BFD_RELOC_LO16_GOTOFF + || reloc == (int) BFD_RELOC_HI16_GOTOFF + || reloc == (int) BFD_RELOC_HI16_S_GOTOFF)) as_warn (_("identifier+constant@got means identifier@got+constant")); - /* Now check for identifier@suffix+constant */ + /* Now check for identifier@suffix+constant. */ if (*str == '-' || *str == '+') { char *orig_line = input_line_pointer; @@ -1362,20 +1453,29 @@ ppc_elf_suffix (str_p, exp_p) if (&input_line_pointer != str_p) input_line_pointer = orig_line; } - *str_p = str; - return ptr->reloc; + + if (BFD_DEFAULT_TARGET_SIZE == 64 + && reloc == (int) BFD_RELOC_PPC64_TOC + && exp_p->X_op == O_symbol) + { + /* This reloc type ignores the symbol. Change the symbol + so that the dummy .TOC. symbol can be omitted from the + object file. */ + exp_p->X_add_symbol = &abs_symbol; + } + + return (bfd_reloc_code_real_type) reloc; } return BFD_RELOC_UNUSED; } -/* Like normal .long/.short/.word, except support @got, etc. */ -/* clobbers input_line_pointer, checks */ -/* end-of-line. */ +/* Like normal .long/.short/.word, except support @got, etc. + Clobbers input_line_pointer, checks end-of-line. */ static void ppc_elf_cons (nbytes) - register int nbytes; /* 1=.byte, 2=.word, 4=.long */ + register int nbytes; /* 1=.byte, 2=.word, 4=.long, 8=.llong. */ { expressionS exp; bfd_reloc_code_real_type reloc; @@ -1391,20 +1491,31 @@ ppc_elf_cons (nbytes) expression (&exp); if (exp.X_op == O_symbol && *input_line_pointer == '@' - && (reloc = ppc_elf_suffix (&input_line_pointer, &exp)) != BFD_RELOC_UNUSED) + && (reloc = ppc_elf_suffix (&input_line_pointer, + &exp)) != BFD_RELOC_UNUSED) { - reloc_howto_type *reloc_howto = bfd_reloc_type_lookup (stdoutput, reloc); - int size = bfd_get_reloc_size (reloc_howto); + reloc_howto_type *reloc_howto; + int size; - if (size > nbytes) - as_bad (_("%s relocations do not fit in %d bytes\n"), reloc_howto->name, nbytes); + reloc_howto = bfd_reloc_type_lookup (stdoutput, reloc); + size = bfd_get_reloc_size (reloc_howto); + if (size > nbytes) + { + as_bad (_("%s relocations do not fit in %d bytes\n"), + reloc_howto->name, nbytes); + } else { - register char *p = frag_more ((int) nbytes); - int offset = nbytes - size; - - fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size, &exp, 0, reloc); + char *p; + int offset; + + p = frag_more (nbytes); + offset = 0; + if (target_big_endian) + offset = nbytes - size; + fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size, + &exp, 0, reloc); } } else @@ -1412,7 +1523,8 @@ ppc_elf_cons (nbytes) } while (*input_line_pointer++ == ','); - input_line_pointer--; /* Put terminator back into stream. */ + /* Put terminator back into stream. */ + input_line_pointer--; demand_empty_rest_of_line (); } @@ -1424,16 +1536,16 @@ ppc_elf_rdata (xxx) char *save_line = input_line_pointer; static char section[] = ".rodata\n"; - /* Just pretend this is .section .rodata */ + /* Just pretend this is .section .rodata */ input_line_pointer = section; obj_elf_section (xxx); input_line_pointer = save_line; } -/* Pseudo op to make file scope bss items */ +/* Pseudo op to make file scope bss items. */ static void -ppc_elf_lcomm(xxx) +ppc_elf_lcomm (xxx) int xxx ATTRIBUTE_UNUSED; { register char *name; @@ -1450,7 +1562,7 @@ ppc_elf_lcomm(xxx) name = input_line_pointer; c = get_symbol_end (); - /* just after name is now '\0' */ + /* just after name is now '\0'. */ p = input_line_pointer; *p = c; SKIP_WHITESPACE (); @@ -1506,12 +1618,12 @@ ppc_elf_lcomm(xxx) return; } - /* allocate_bss: */ + /* Allocate_bss. */ old_sec = now_seg; old_subsec = now_subseg; if (align) { - /* convert to a power of 2 alignment */ + /* Convert to a power of 2 alignment. */ for (align2 = 0; (align & 1) == 0; align >>= 1, ++align2); if (align != 1) { @@ -1566,11 +1678,11 @@ ppc_elf_validate_fix (fixp, seg) && fixp->fx_r_type != BFD_RELOC_LO16_BASEREL && fixp->fx_r_type != BFD_RELOC_HI16_BASEREL && fixp->fx_r_type != BFD_RELOC_HI16_S_BASEREL + && (seg->flags & SEC_LOAD) != 0 && strcmp (segment_name (seg), ".got2") != 0 && strcmp (segment_name (seg), ".dtors") != 0 && strcmp (segment_name (seg), ".ctors") != 0 && strcmp (segment_name (seg), ".fixup") != 0 - && strcmp (segment_name (seg), ".stab") != 0 && strcmp (segment_name (seg), ".gcc_except_table") != 0 && strcmp (segment_name (seg), ".eh_frame") != 0 && strcmp (segment_name (seg), ".ex_shared") != 0) @@ -1585,12 +1697,31 @@ ppc_elf_validate_fix (fixp, seg) return; } } + +#if BFD_DEFAULT_TARGET_SIZE == 64 +/* Don't emit .TOC. symbol. */ +int +ppc_elf_frob_symbol (sym) + symbolS *sym; +{ + const char *name; + + name = S_GET_NAME (sym); + if (name != NULL && strcmp (name, ".TOC.") == 0) + { + S_CLEAR_EXTERNAL (sym); + return 1; + } + + return 0; +} +#endif #endif /* OBJ_ELF */ #ifdef TE_PE /* - * Summary of parse_toc_entry(). + * Summary of parse_toc_entry. * * in: Input_line_pointer points to the '[' in one of: * @@ -1623,7 +1754,7 @@ enum toc_size_qualifier }; static int -parse_toc_entry(toc_kind) +parse_toc_entry (toc_kind) enum toc_size_qualifier *toc_kind; { char *start; @@ -1631,43 +1762,43 @@ parse_toc_entry(toc_kind) char c; enum toc_size_qualifier t; - /* save the input_line_pointer */ + /* Save the input_line_pointer. */ start = input_line_pointer; - /* skip over the '[' , and whitespace */ + /* Skip over the '[' , and whitespace. */ ++input_line_pointer; SKIP_WHITESPACE (); - /* find the spelling of the operand */ + /* Find the spelling of the operand. */ toc_spec = input_line_pointer; c = get_symbol_end (); - if (strcmp(toc_spec, "toc") == 0) + if (strcmp (toc_spec, "toc") == 0) { t = default_toc; } - else if (strcmp(toc_spec, "tocv") == 0) + else if (strcmp (toc_spec, "tocv") == 0) { t = data_in_toc; } - else if (strcmp(toc_spec, "toc32") == 0) + else if (strcmp (toc_spec, "toc32") == 0) { t = must_be_32; } - else if (strcmp(toc_spec, "toc64") == 0) + else if (strcmp (toc_spec, "toc64") == 0) { t = must_be_64; } else { as_bad (_("syntax error: invalid toc specifier `%s'"), toc_spec); - *input_line_pointer = c; /* put back the delimiting char */ - input_line_pointer = start; /* reset input_line pointer */ + *input_line_pointer = c; + input_line_pointer = start; return 0; } - /* now find the ']' */ - *input_line_pointer = c; /* put back the delimiting char */ + /* Now find the ']'. */ + *input_line_pointer = c; SKIP_WHITESPACE (); /* leading whitespace could be there. */ c = *input_line_pointer++; /* input_line_pointer->past char in c. */ @@ -1675,11 +1806,11 @@ parse_toc_entry(toc_kind) if (c != ']') { as_bad (_("syntax error: expected `]', found `%c'"), c); - input_line_pointer = start; /* reset input_line pointer */ + input_line_pointer = start; return 0; } - *toc_kind = t; /* set return value */ + *toc_kind = t; return 1; } #endif @@ -1720,7 +1851,7 @@ md_assemble (str) #endif /* Get the opcode. */ - for (s = str; *s != '\0' && ! isspace (*s); s++) + for (s = str; *s != '\0' && ! ISSPACE (*s); s++) ; if (*s != '\0') *s++ = '\0'; @@ -1743,7 +1874,7 @@ md_assemble (str) insn = opcode->opcode; str = s; - while (isspace (*str)) + while (ISSPACE (*str)) ++str; /* PowerPC operands are just expressions. The only real issue is @@ -1816,7 +1947,7 @@ md_assemble (str) from the input. */ if ((operand->flags & PPC_OPERAND_FAKE) != 0) { - insn = (*operand->insert) (insn, 0L, &errmsg); + insn = (*operand->insert) (insn, 0L, ppc_cpu | ppc_size, &errmsg); if (errmsg != (const char *) NULL) as_bad (errmsg); continue; @@ -1829,7 +1960,7 @@ md_assemble (str) { if (operand->insert) { - insn = (*operand->insert) (insn, 0L, &errmsg); + insn = (*operand->insert) (insn, 0L, ppc_cpu | ppc_size, &errmsg); if (errmsg != (const char *) NULL) as_bad (errmsg); } @@ -1846,91 +1977,92 @@ md_assemble (str) if (*input_line_pointer == '[') { /* We are expecting something like the second argument here: - - lwz r4,[toc].GS.0.static_int(rtoc) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - The argument following the `]' must be a symbol name, and the - register must be the toc register: 'rtoc' or '2' - - The effect is to 0 as the displacement field - in the instruction, and issue an IMAGE_REL_PPC_TOCREL16 (or - the appropriate variation) reloc against it based on the symbol. - The linker will build the toc, and insert the resolved toc offset. - - Note: - o The size of the toc entry is currently assumed to be - 32 bits. This should not be assumed to be a hard coded - number. - o In an effort to cope with a change from 32 to 64 bits, - there are also toc entries that are specified to be - either 32 or 64 bits: - lwz r4,[toc32].GS.0.static_int(rtoc) - lwz r4,[toc64].GS.0.static_int(rtoc) - These demand toc entries of the specified size, and the - instruction probably requires it. - */ + * + * lwz r4,[toc].GS.0.static_int(rtoc) + * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * The argument following the `]' must be a symbol name, and the + * register must be the toc register: 'rtoc' or '2' + * + * The effect is to 0 as the displacement field + * in the instruction, and issue an IMAGE_REL_PPC_TOCREL16 (or + * the appropriate variation) reloc against it based on the symbol. + * The linker will build the toc, and insert the resolved toc offset. + * + * Note: + * o The size of the toc entry is currently assumed to be + * 32 bits. This should not be assumed to be a hard coded + * number. + * o In an effort to cope with a change from 32 to 64 bits, + * there are also toc entries that are specified to be + * either 32 or 64 bits: + * lwz r4,[toc32].GS.0.static_int(rtoc) + * lwz r4,[toc64].GS.0.static_int(rtoc) + * These demand toc entries of the specified size, and the + * instruction probably requires it. + */ int valid_toc; enum toc_size_qualifier toc_kind; bfd_reloc_code_real_type toc_reloc; - /* go parse off the [tocXX] part */ - valid_toc = parse_toc_entry(&toc_kind); + /* Go parse off the [tocXX] part. */ + valid_toc = parse_toc_entry (&toc_kind); if (!valid_toc) { - /* Note: message has already been issued. */ - /* FIXME: what sort of recovery should we do? */ - /* demand_rest_of_line(); return; ? */ + /* Note: message has already been issued. + FIXME: what sort of recovery should we do? + demand_rest_of_line (); return; ? */ } - /* Now get the symbol following the ']' */ - expression(&ex); + /* Now get the symbol following the ']'. */ + expression (&ex); switch (toc_kind) { case default_toc: - /* In this case, we may not have seen the symbol yet, since */ - /* it is allowed to appear on a .extern or .globl or just be */ - /* a label in the .data section. */ + /* In this case, we may not have seen the symbol yet, + since it is allowed to appear on a .extern or .globl + or just be a label in the .data section. */ toc_reloc = BFD_RELOC_PPC_TOC16; break; case data_in_toc: - /* 1. The symbol must be defined and either in the toc */ - /* section, or a global. */ - /* 2. The reloc generated must have the TOCDEFN flag set in */ - /* upper bit mess of the reloc type. */ - /* FIXME: It's a little confusing what the tocv qualifier can */ - /* be used for. At the very least, I've seen three */ - /* uses, only one of which I'm sure I can explain. */ + /* 1. The symbol must be defined and either in the toc + section, or a global. + 2. The reloc generated must have the TOCDEFN flag set + in upper bit mess of the reloc type. + FIXME: It's a little confusing what the tocv + qualifier can be used for. At the very least, I've + seen three uses, only one of which I'm sure I can + explain. */ if (ex.X_op == O_symbol) { assert (ex.X_add_symbol != NULL); if (symbol_get_bfdsym (ex.X_add_symbol)->section != tocdata_section) { - as_bad(_("[tocv] symbol is not a toc symbol")); + as_bad (_("[tocv] symbol is not a toc symbol")); } } toc_reloc = BFD_RELOC_PPC_TOC16; break; case must_be_32: - /* FIXME: these next two specifically specify 32/64 bit toc */ - /* entries. We don't support them today. Is this the */ - /* right way to say that? */ + /* FIXME: these next two specifically specify 32/64 bit + toc entries. We don't support them today. Is this + the right way to say that? */ toc_reloc = BFD_RELOC_UNUSED; as_bad (_("Unimplemented toc32 expression modifier")); break; case must_be_64: - /* FIXME: see above */ + /* FIXME: see above. */ toc_reloc = BFD_RELOC_UNUSED; as_bad (_("Unimplemented toc64 expression modifier")); break; default: fprintf (stderr, - _("Unexpected return value [%d] from parse_toc_entry!\n"), - toc_kind); + _("Unexpected return value [%d] from parse_toc_entry!\n"), + toc_kind); abort (); break; } @@ -1944,8 +2076,8 @@ md_assemble (str) fixups[fc].opindex = *opindex_ptr; ++fc; - /* Ok. We've set up the fixup for the instruction. Now make it - look like the constant 0 was found here */ + /* Ok. We've set up the fixup for the instruction. Now make it + look like the constant 0 was found here. */ ex.X_unsigned = 1; ex.X_op = O_constant; ex.X_add_number = 0; @@ -1992,36 +2124,67 @@ md_assemble (str) case BFD_RELOC_LO16: /* X_unsigned is the default, so if the user has done - something which cleared it, we always produce a - signed value. */ - if (ex.X_unsigned - && (operand->flags & PPC_OPERAND_SIGNED) == 0) + something which cleared it, we always produce a + signed value. */ + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) ex.X_add_number &= 0xffff; else - ex.X_add_number = (((ex.X_add_number & 0xffff) - ^ 0x8000) - - 0x8000); + ex.X_add_number = SEX16 (ex.X_add_number); break; case BFD_RELOC_HI16: - ex.X_add_number = (ex.X_add_number >> 16) & 0xffff; + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) + ex.X_add_number = PPC_HI (ex.X_add_number); + else + ex.X_add_number = SEX16 (PPC_HI (ex.X_add_number)); break; case BFD_RELOC_HI16_S: - ex.X_add_number = ((((ex.X_add_number >> 16) & 0xffff) - + ((ex.X_add_number >> 15) & 1)) - & 0xffff); + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) + ex.X_add_number = PPC_HA (ex.X_add_number); + else + ex.X_add_number = SEX16 (PPC_HA (ex.X_add_number)); + break; + +#if BFD_DEFAULT_TARGET_SIZE == 64 + case BFD_RELOC_PPC64_HIGHER: + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) + ex.X_add_number = PPC_HIGHER (ex.X_add_number); + else + ex.X_add_number = SEX16 (PPC_HIGHER (ex.X_add_number)); + break; + + case BFD_RELOC_PPC64_HIGHER_S: + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) + ex.X_add_number = PPC_HIGHERA (ex.X_add_number); + else + ex.X_add_number = SEX16 (PPC_HIGHERA (ex.X_add_number)); break; + + case BFD_RELOC_PPC64_HIGHEST: + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) + ex.X_add_number = PPC_HIGHEST (ex.X_add_number); + else + ex.X_add_number = SEX16 (PPC_HIGHEST (ex.X_add_number)); + break; + + case BFD_RELOC_PPC64_HIGHEST_S: + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) + ex.X_add_number = PPC_HIGHESTA (ex.X_add_number); + else + ex.X_add_number = SEX16 (PPC_HIGHESTA (ex.X_add_number)); + break; +#endif /* BFD_DEFAULT_TARGET_SIZE == 64 */ } -#endif +#endif /* OBJ_ELF */ insn = ppc_insert_operand (insn, operand, ex.X_add_number, (char *) NULL, 0); } #ifdef OBJ_ELF else if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED) { - /* For the absoulte forms of branchs, convert the PC relative form back into - the absolute. */ + /* For the absolute forms of branches, convert the PC + relative form back into the absolute. */ if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0) { switch (reloc) @@ -2043,6 +2206,51 @@ md_assemble (str) } } + if (BFD_DEFAULT_TARGET_SIZE == 64 + && ppc_size == PPC_OPCODE_64 + && (operand->flags & PPC_OPERAND_DS) != 0) + { + switch (reloc) + { + case BFD_RELOC_16: + reloc = BFD_RELOC_PPC64_ADDR16_DS; + break; + case BFD_RELOC_LO16: + reloc = BFD_RELOC_PPC64_ADDR16_LO_DS; + break; + case BFD_RELOC_16_GOTOFF: + reloc = BFD_RELOC_PPC64_GOT16_DS; + break; + case BFD_RELOC_LO16_GOTOFF: + reloc = BFD_RELOC_PPC64_GOT16_LO_DS; + break; + case BFD_RELOC_LO16_PLTOFF: + reloc = BFD_RELOC_PPC64_PLT16_LO_DS; + break; + case BFD_RELOC_32_BASEREL: + reloc = BFD_RELOC_PPC64_SECTOFF_DS; + break; + case BFD_RELOC_LO16_BASEREL: + reloc = BFD_RELOC_PPC64_SECTOFF_LO_DS; + break; + case BFD_RELOC_PPC_TOC16: + reloc = BFD_RELOC_PPC64_TOC16_DS; + break; + case BFD_RELOC_PPC64_TOC16_LO: + reloc = BFD_RELOC_PPC64_TOC16_LO_DS; + break; + case BFD_RELOC_PPC64_PLTGOT16: + reloc = BFD_RELOC_PPC64_PLTGOT16_DS; + break; + case BFD_RELOC_PPC64_PLTGOT16_LO: + reloc = BFD_RELOC_PPC64_PLTGOT16_LO_DS; + break; + default: + as_bad (_("unsupported relocation for DS offset field")); + break; + } + } + /* We need to generate a fixup for this expression. */ if (fc >= MAX_INSN_FIXUPS) as_fatal (_("too many fixups")); @@ -2090,7 +2298,7 @@ md_assemble (str) ++str; } - while (isspace (*str)) + while (ISSPACE (*str)) ++str; if (*str != '\0') @@ -2109,7 +2317,7 @@ md_assemble (str) BFD_RELOC_UNUSED plus the operand index. This lets us easily handle fixups for any operand type, although that is admittedly not a very exciting feature. We pick a BFD reloc type in - md_apply_fix. */ + md_apply_fix3. */ for (i = 0; i < fc; i++) { const struct powerpc_operand *operand; @@ -2117,11 +2325,12 @@ md_assemble (str) operand = &powerpc_operands[fixups[i].opindex]; if (fixups[i].reloc != BFD_RELOC_UNUSED) { - reloc_howto_type *reloc_howto = bfd_reloc_type_lookup (stdoutput, fixups[i].reloc); + reloc_howto_type *reloc_howto; int size; int offset; fixS *fixP; + reloc_howto = bfd_reloc_type_lookup (stdoutput, fixups[i].reloc); if (!reloc_howto) abort (); @@ -2131,8 +2340,11 @@ md_assemble (str) if (size < 1 || size > 4) abort (); - fixP = fix_new_exp (frag_now, f - frag_now->fr_literal + offset, size, - &fixups[i].exp, reloc_howto->pc_relative, + fixP = fix_new_exp (frag_now, + f - frag_now->fr_literal + offset, + size, + &fixups[i].exp, + reloc_howto->pc_relative, fixups[i].reloc); /* Turn off complaints that the addend is too large for things like @@ -2144,6 +2356,14 @@ md_assemble (str) case BFD_RELOC_LO16: case BFD_RELOC_HI16: case BFD_RELOC_HI16_S: +#ifdef OBJ_ELF +#if BFD_DEFAULT_TARGET_SIZE == 64 + case BFD_RELOC_PPC64_HIGHER: + case BFD_RELOC_PPC64_HIGHER_S: + case BFD_RELOC_PPC64_HIGHEST: + case BFD_RELOC_PPC64_HIGHEST_S: +#endif +#endif fixP->fx_no_overflow = 1; break; default: @@ -2151,11 +2371,13 @@ md_assemble (str) } } else - fix_new_exp (frag_now, f - frag_now->fr_literal, 4, + fix_new_exp (frag_now, + f - frag_now->fr_literal, + 4, &fixups[i].exp, (operand->flags & PPC_OPERAND_RELATIVE) != 0, ((bfd_reloc_code_real_type) - (fixups[i].opindex + (int) BFD_RELOC_UNUSED))); + (fixups[i].opindex + (int) BFD_RELOC_UNUSED))); } } @@ -2240,7 +2462,7 @@ ppc_macro (str, macro) } #ifdef OBJ_ELF -/* For ELF, add support for SHF_EXCLUDE and SHT_ORDERED */ +/* For ELF, add support for SHF_EXCLUDE and SHT_ORDERED. */ int ppc_section_letter (letter, ptr_msg) @@ -2250,7 +2472,7 @@ ppc_section_letter (letter, ptr_msg) if (letter == 'e') return SHF_EXCLUDE; - *ptr_msg = _("Bad .section directive: want a,w,x,e in string"); + *ptr_msg = _("Bad .section directive: want a,e,w,x,M,S in string"); return 0; } @@ -2585,8 +2807,8 @@ ppc_change_csect (sym) } /* We set the obstack chunk size to a small value before - changing subsegments, so that we don't use a lot of memory - space for what may be a small section. */ + changing subsegments, so that we don't use a lot of memory + space for what may be a small section. */ hold_chunksize = chunksize; chunksize = 64; @@ -2813,8 +3035,8 @@ ppc_stabx (ignore) default: /* The value is some complex expression. This will probably - fail at some later point, but this is probably the right - thing to do here. */ + fail at some later point, but this is probably the right + thing to do here. */ symbol_set_value_expression (sym, &exp); break; } @@ -2843,23 +3065,23 @@ ppc_stabx (ignore) symbol_get_tc (sym)->output = 1; if (S_GET_STORAGE_CLASS (sym) == C_STSYM) { - + symbol_get_tc (sym)->within = ppc_current_block; /* In this case : - + .bs name .stabx "z",arrays_,133,0 .es - + .comm arrays_,13768,3 - + resolve_symbol_value will copy the exp's "within" into sym's when the offset is 0. Since this seems to be corner case problem, only do the correction for storage class C_STSYM. A better solution - would be to have the tc field updated in ppc_symbol_new_hook. */ - - if (exp.X_op == O_symbol) + would be to have the tc field updated in ppc_symbol_new_hook. */ + + if (exp.X_op == O_symbol) { symbol_get_tc (exp.X_add_symbol)->within = ppc_current_block; } @@ -2977,7 +3199,10 @@ ppc_function (ignore) } /* The .bf pseudo-op. This is just like a COFF C_FCN symbol named - ".bf". */ + ".bf". If the pseudo op .bi was seen before .bf, patch the .bi sym + with the correct line number */ + +static symbolS *saved_bi_sym = 0; static void ppc_bf (ignore) @@ -2996,6 +3221,14 @@ ppc_bf (ignore) S_SET_NUMBER_AUXILIARY (sym, 1); SA_SET_SYM_LNNO (sym, coff_line_base); + /* Line number for bi. */ + if (saved_bi_sym) + { + S_SET_VALUE (saved_bi_sym, coff_n_line_nos); + saved_bi_sym = 0; + } + + symbol_get_tc (sym)->output = 1; ppc_frob_label (sym); @@ -3029,7 +3262,8 @@ ppc_ef (ignore) /* The .bi and .ei pseudo-ops. These take a string argument and generates a C_BINCL or C_EINCL symbol, which goes at the start of - the symbol list. */ + the symbol list. The value of .bi will be know when the next .bf + is encountered. */ static void ppc_biei (ei) @@ -3059,6 +3293,12 @@ ppc_biei (ei) S_SET_STORAGE_CLASS (sym, ei ? C_EINCL : C_BINCL); symbol_get_tc (sym)->output = 1; + /* Save bi. */ + if (ei) + saved_bi_sym = 0; + else + saved_bi_sym = sym; + for (look = last_biei ? last_biei : symbol_rootP; (look != (symbolS *) NULL && (S_GET_STORAGE_CLASS (look) == C_FILE @@ -3293,14 +3533,6 @@ ppc_xcoff_cons (log_size) } static void -ppc_machine(dummy) - int dummy ATTRIBUTE_UNUSED; -{ - discard_rest_of_line(); - /* What does aix use this for? */ -} - -static void ppc_vbyte (dummy) int dummy ATTRIBUTE_UNUSED; { @@ -3328,15 +3560,18 @@ ppc_vbyte (dummy) } #endif /* OBJ_XCOFF */ +#if defined (OBJ_XCOFF) || defined (OBJ_ELF) /* The .tc pseudo-op. This is used when generating either XCOFF or ELF. This takes two or more arguments. When generating XCOFF output, the first argument is the name to give to this location in the toc; this will be a symbol with class - TC. The rest of the arguments are 4 byte values to actually put at + TC. The rest of the arguments are N-byte values to actually put at this location in the TOC; often there is just one more argument, a - relocateable symbol reference. + relocateable symbol reference. The size of the value to store + depends on target word size. A 32-bit target uses 4-byte values, a + 64-bit target uses 8-byte values. When not generating XCOFF output, the arguments are the same, but the first argument is simply ignored. */ @@ -3399,7 +3634,9 @@ ppc_tc (ignore) ppc_frob_label (sym); } -#else /* ! defined (OBJ_XCOFF) */ +#endif /* OBJ_XCOFF */ +#ifdef OBJ_ELF + int align; /* Skip the TOC symbol name. */ while (is_part_of_name (*input_line_pointer) @@ -3409,11 +3646,11 @@ ppc_tc (ignore) || *input_line_pointer == '}') ++input_line_pointer; - /* Align to a four byte boundary. */ - frag_align (2, 0, 0); - record_alignment (now_seg, 2); - -#endif /* ! defined (OBJ_XCOFF) */ + /* Align to a four/eight byte boundary. */ + align = BFD_DEFAULT_TARGET_SIZE == 64 && ppc_size == PPC_OPCODE_64 ? 3 : 2; + frag_align (align, 0, 0); + record_alignment (now_seg, align); +#endif /* OBJ_ELF */ if (*input_line_pointer != ',') demand_empty_rest_of_line (); @@ -3423,10 +3660,44 @@ ppc_tc (ignore) cons ((ppc_size == PPC_OPCODE_64) ? 8 : 4); } } + +/* Pseudo-op .machine. */ +/* FIXME: `.machine' is a nop for the moment. It would be nice to + accept this directive on the first line of input and set ppc_size + and the target format accordingly. Unfortunately, the target + format is selected in output-file.c:output_file_create before we + even get to md_begin, so it's not possible without changing + as.c:main. */ + +static void +ppc_machine (ignore) + int ignore ATTRIBUTE_UNUSED; +{ + discard_rest_of_line (); +} + +/* See whether a symbol is in the TOC section. */ + +static int +ppc_is_toc_sym (sym) + symbolS *sym; +{ +#ifdef OBJ_XCOFF + return symbol_get_tc (sym)->class == XMC_TC; +#endif +#ifdef OBJ_ELF + const char *sname = segment_name (S_GET_SEGMENT (sym)); + if (BFD_DEFAULT_TARGET_SIZE == 64 && ppc_size == PPC_OPCODE_64) + return strcmp (sname, ".toc") == 0; + else + return strcmp (sname, ".got") == 0; +#endif +} +#endif /* defined (OBJ_XCOFF) || defined (OBJ_ELF) */ #ifdef TE_PE -/* Pseudo-ops specific to the Windows NT PowerPC PE (coff) format */ +/* Pseudo-ops specific to the Windows NT PowerPC PE (coff) format. */ /* Set the current section. */ static void @@ -3440,23 +3711,23 @@ ppc_set_current_section (new) /* pseudo-op: .previous behaviour: toggles the current section with the previous section. errors: None - warnings: "No previous section" -*/ + warnings: "No previous section" */ + static void -ppc_previous(ignore) +ppc_previous (ignore) int ignore ATTRIBUTE_UNUSED; { symbolS *tmp; if (ppc_previous_section == NULL) { - as_warn(_("No previous section to return to. Directive ignored.")); + as_warn (_("No previous section to return to. Directive ignored.")); return; } - subseg_set(ppc_previous_section, 0); + subseg_set (ppc_previous_section, 0); - ppc_set_current_section(ppc_previous_section); + ppc_set_current_section (ppc_previous_section); } /* pseudo-op: .pdata @@ -3472,11 +3743,10 @@ ppc_previous(ignore) commentary: Tag index tables (also known as the function table) for exception - handling, debugging, etc. + handling, debugging, etc. */ -*/ static void -ppc_pdata(ignore) +ppc_pdata (ignore) int ignore ATTRIBUTE_UNUSED; { if (pdata_section == 0) @@ -3491,9 +3761,9 @@ ppc_pdata(ignore) } else { - pdata_section = subseg_new(".pdata", 0); + pdata_section = subseg_new (".pdata", 0); } - ppc_set_current_section(pdata_section); + ppc_set_current_section (pdata_section); } /* pseudo-op: .ydata @@ -3508,18 +3778,18 @@ ppc_pdata(ignore) 3 - double word aligned (that would be 4 byte boundary) commentary: Tag tables (also known as the scope table) for exception handling, - debugging, etc. -*/ + debugging, etc. */ + static void -ppc_ydata(ignore) +ppc_ydata (ignore) int ignore ATTRIBUTE_UNUSED; { if (ydata_section == 0) { ydata_section = subseg_new (".ydata", 0); bfd_set_section_flags (stdoutput, ydata_section, - (SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_READONLY | SEC_DATA )); + (SEC_ALLOC | SEC_LOAD | SEC_RELOC + | SEC_READONLY | SEC_DATA )); bfd_set_section_alignment (stdoutput, ydata_section, 3); } @@ -3527,7 +3797,7 @@ ppc_ydata(ignore) { ydata_section = subseg_new (".ydata", 0); } - ppc_set_current_section(ydata_section); + ppc_set_current_section (ydata_section); } /* pseudo-op: .reldata @@ -3545,10 +3815,10 @@ ppc_ydata(ignore) commentary: Like .data, but intended to hold data subject to relocation, such as - function descriptors, etc. -*/ + function descriptors, etc. */ + static void -ppc_reldata(ignore) +ppc_reldata (ignore) int ignore ATTRIBUTE_UNUSED; { if (reldata_section == 0) @@ -3556,8 +3826,8 @@ ppc_reldata(ignore) reldata_section = subseg_new (".reldata", 0); bfd_set_section_flags (stdoutput, reldata_section, - ( SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_DATA )); + (SEC_ALLOC | SEC_LOAD | SEC_RELOC + | SEC_DATA)); bfd_set_section_alignment (stdoutput, reldata_section, 2); } @@ -3565,7 +3835,7 @@ ppc_reldata(ignore) { reldata_section = subseg_new (".reldata", 0); } - ppc_set_current_section(reldata_section); + ppc_set_current_section (reldata_section); } /* pseudo-op: .rdata @@ -3576,10 +3846,10 @@ ppc_reldata(ignore) initial: .section .rdata "dr3" d - initialized data r - readable - 3 - double word aligned (that would be 4 byte boundary) -*/ + 3 - double word aligned (that would be 4 byte boundary) */ + static void -ppc_rdata(ignore) +ppc_rdata (ignore) int ignore ATTRIBUTE_UNUSED; { if (rdata_section == 0) @@ -3595,7 +3865,7 @@ ppc_rdata(ignore) { rdata_section = subseg_new (".rdata", 0); } - ppc_set_current_section(rdata_section); + ppc_set_current_section (rdata_section); } /* pseudo-op: .ualong @@ -3603,14 +3873,14 @@ ppc_rdata(ignore) performed. FIXME: test the alignment statement errors: None - warnings: None -*/ + warnings: None */ + static void -ppc_ualong(ignore) +ppc_ualong (ignore) int ignore ATTRIBUTE_UNUSED; { - /* try for long */ - cons ( 4 ); + /* Try for long. */ + cons (4); } /* pseudo-op: .znop <symbol name> @@ -3618,20 +3888,17 @@ ppc_ualong(ignore) Issue a IMAGE_REL_PPC_IFGLUE relocation against it, using the supplied symbol name. errors: None - warnings: Missing symbol name -*/ + warnings: Missing symbol name */ + static void -ppc_znop(ignore) +ppc_znop (ignore) int ignore ATTRIBUTE_UNUSED; { unsigned long insn; const struct powerpc_opcode *opcode; expressionS ex; char *f; - symbolS *sym; - - /* Strip out the symbol name */ char *symbol_name; char c; char *name; @@ -3639,6 +3906,7 @@ ppc_znop(ignore) flagword flags; asection *sec; + /* Strip out the symbol name. */ symbol_name = input_line_pointer; c = get_symbol_end (); @@ -3654,7 +3922,7 @@ ppc_znop(ignore) /* Look up the opcode in the hash table. */ opcode = (const struct powerpc_opcode *) hash_find (ppc_hash, "nop"); - /* stick in the nop */ + /* Stick in the nop. */ insn = opcode->opcode; /* Write out the instruction. */ @@ -3673,10 +3941,10 @@ ppc_znop(ignore) /* pseudo-op: behaviour: errors: - warnings: -*/ + warnings: */ + static void -ppc_pe_comm(lcomm) +ppc_pe_comm (lcomm) int lcomm; { register char *name; @@ -3689,7 +3957,7 @@ ppc_pe_comm(lcomm) name = input_line_pointer; c = get_symbol_end (); - /* just after name is now '\0' */ + /* just after name is now '\0'. */ p = input_line_pointer; *p = c; SKIP_WHITESPACE (); @@ -3808,7 +4076,7 @@ void ppc_pe_section (ignore) int ignore ATTRIBUTE_UNUSED; { - /* Strip out the section name */ + /* Strip out the section name. */ char *section_name; char c; char *name; @@ -3851,7 +4119,8 @@ ppc_pe_section (ignore) align = 1; } else - align = 4; /* default alignment to 16 byte boundary */ + /* Default alignment to 16 byte boundary. */ + align = 4; if (*input_line_pointer == ',') { @@ -3939,8 +4208,8 @@ ppc_pe_section (ignore) break; default: - as_bad(_("unknown section attribute '%c'"), - *input_line_pointer); + as_bad (_("unknown section attribute '%c'"), + *input_line_pointer); break; } ++input_line_pointer; @@ -3952,7 +4221,7 @@ ppc_pe_section (ignore) sec = subseg_new (name, (subsegT) exp); - ppc_set_current_section(sec); + ppc_set_current_section (sec); if (flags != SEC_NO_FLAGS) { @@ -3962,7 +4231,7 @@ ppc_pe_section (ignore) bfd_errmsg (bfd_get_error ())); } - bfd_set_section_alignment(stdoutput, sec, align); + bfd_set_section_alignment (stdoutput, sec, align); } @@ -3996,10 +4265,10 @@ ppc_pe_tocd (ignore) if (tocdata_section == 0) { tocdata_section = subseg_new (".tocd", 0); - /* FIXME: section flags won't work */ + /* FIXME: section flags won't work. */ bfd_set_section_flags (stdoutput, tocdata_section, (SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_READONLY | SEC_DATA )); + | SEC_READONLY | SEC_DATA)); bfd_set_section_alignment (stdoutput, tocdata_section, 2); } @@ -4008,7 +4277,7 @@ ppc_pe_tocd (ignore) rdata_section = subseg_new (".tocd", 0); } - ppc_set_current_section(tocdata_section); + ppc_set_current_section (tocdata_section); demand_empty_rest_of_line (); } @@ -4055,8 +4324,7 @@ ppc_canonicalize_symbol_name (name) } for (s++; *s != '\0' && *s != brac; s++) - if (islower (*s)) - *s = toupper (*s); + *s = TOUPPER (*s); if (*s == '\0' || s[1] != '\0') as_bad (_("bad symbol suffix")); @@ -4238,7 +4506,7 @@ ppc_frob_symbol (sym) ppc_last_function = sym; if (symbol_get_tc (sym)->size != (symbolS *) NULL) { - resolve_symbol_value (symbol_get_tc (sym)->size, 1); + resolve_symbol_value (symbol_get_tc (sym)->size); SA_SET_SYM_FSIZE (sym, (long) S_GET_VALUE (symbol_get_tc (sym)->size)); } @@ -4298,7 +4566,7 @@ ppc_frob_symbol (sym) - S_GET_VALUE (sym)); else { - resolve_symbol_value (symbol_get_tc (sym)->next, 1); + resolve_symbol_value (symbol_get_tc (sym)->next); a->x_csect.x_scnlen.l = (S_GET_VALUE (symbol_get_tc (sym)->next) - S_GET_VALUE (sym)); } @@ -4317,7 +4585,7 @@ ppc_frob_symbol (sym) else if (S_GET_SEGMENT (sym) == absolute_section) { /* This is an absolute symbol. The csect will be created by - ppc_adjust_symtab. */ + ppc_adjust_symtab. */ ppc_saw_abs = true; a->x_csect.x_smtyp = XTY_LD; if (symbol_get_tc (sym)->class == -1) @@ -4351,7 +4619,7 @@ ppc_frob_symbol (sym) } else { - resolve_symbol_value (next, 1); + resolve_symbol_value (next); a->x_csect.x_scnlen.l = (S_GET_VALUE (next) - S_GET_VALUE (sym)); } @@ -4382,7 +4650,7 @@ ppc_frob_symbol (sym) { while (symbol_get_tc (csect)->next != (symbolS *) NULL) { - resolve_symbol_value (symbol_get_tc (csect)->next, 1); + resolve_symbol_value (symbol_get_tc (csect)->next); if (S_GET_VALUE (symbol_get_tc (csect)->next) > S_GET_VALUE (sym)) break; @@ -4428,15 +4696,15 @@ ppc_frob_symbol (sym) /* The value is the offset from the enclosing csect. */ block = symbol_get_tc (sym)->within; csect = symbol_get_tc (block)->within; - resolve_symbol_value (csect, 1); + resolve_symbol_value (csect); S_SET_VALUE (sym, S_GET_VALUE (sym) - S_GET_VALUE (csect)); } else if (S_GET_STORAGE_CLASS (sym) == C_BINCL || S_GET_STORAGE_CLASS (sym) == C_EINCL) { /* We want the value to be a file offset into the line numbers. - BFD will do that for us if we set the right flags. We have - already set the value correctly. */ + BFD will do that for us if we set the right flags. We have + already set the value correctly. */ coffsymbol (symbol_get_bfdsym (sym))->native->fix_line = 1; } @@ -4645,7 +4913,7 @@ ppc_fix_adjustable (fix) { valueT val; - resolve_symbol_value (fix->fx_addsy, 1); + resolve_symbol_value (fix->fx_addsy); val = S_GET_VALUE (fix->fx_addsy); if (ppc_toc_csect != (symbolS *) NULL && fix->fx_addsy != (symbolS *) NULL @@ -4665,7 +4933,7 @@ ppc_fix_adjustable (fix) continue; if (symbol_get_tc (sy)->class != XMC_TC) break; - resolve_symbol_value (sy, 1); + resolve_symbol_value (sy); if (val == S_GET_VALUE (sy)) { fix->fx_addsy = sy; @@ -4710,9 +4978,9 @@ ppc_fix_adjustable (fix) <= val)) { /* If the csect address equals the symbol value, then we - have to look through the full symbol table to see - whether this is the csect we want. Note that we will - only get here if the csect has zero length. */ + have to look through the full symbol table to see + whether this is the csect we want. Note that we will + only get here if the csect has zero length. */ if ((symbol_get_frag (csect)->fr_address == val) && S_GET_VALUE (csect) == S_GET_VALUE (fix->fx_addsy)) { @@ -4729,7 +4997,7 @@ ppc_fix_adjustable (fix) } /* If we found the symbol before the next csect - symbol, then this is the csect we want. */ + symbol, then this is the csect we want. */ if (scan == fix->fx_addsy) break; } @@ -4749,7 +5017,7 @@ ppc_fix_adjustable (fix) && S_GET_SEGMENT (fix->fx_addsy) == bss_section && ! S_IS_EXTERNAL (fix->fx_addsy)) { - resolve_symbol_value (symbol_get_frag (fix->fx_addsy)->fr_symbol, 1); + resolve_symbol_value (symbol_get_frag (fix->fx_addsy)->fr_symbol); fix->fx_offset += (S_GET_VALUE (fix->fx_addsy) - S_GET_VALUE (symbol_get_frag (fix->fx_addsy)->fr_symbol)); @@ -4786,18 +5054,27 @@ ppc_force_relocation (fix) #endif /* OBJ_XCOFF */ -/* See whether a symbol is in the TOC section. */ - -static int -ppc_is_toc_sym (sym) - symbolS *sym; +#ifdef OBJ_ELF +int +ppc_fix_adjustable (fix) + fixS *fix; { -#ifdef OBJ_XCOFF - return symbol_get_tc (sym)->class == XMC_TC; -#else - return strcmp (segment_name (S_GET_SEGMENT (sym)), ".got") == 0; -#endif + return (fix->fx_r_type != BFD_RELOC_16_GOTOFF + && fix->fx_r_type != BFD_RELOC_LO16_GOTOFF + && fix->fx_r_type != BFD_RELOC_HI16_GOTOFF + && fix->fx_r_type != BFD_RELOC_HI16_S_GOTOFF + && fix->fx_r_type != BFD_RELOC_GPREL16 + && fix->fx_r_type != BFD_RELOC_VTABLE_INHERIT + && fix->fx_r_type != BFD_RELOC_VTABLE_ENTRY + && ! S_IS_EXTERNAL (fix->fx_addsy) + && ! S_IS_WEAK (fix->fx_addsy) + && (fix->fx_pcrel + || (fix->fx_subsy != NULL + && (S_GET_SEGMENT (fix->fx_subsy) + == S_GET_SEGMENT (fix->fx_addsy))) + || S_IS_LOCAL (fix->fx_addsy))); } +#endif /* Apply a fixup to the object code. This is called for all the fixups we generated by the call to fix_new_exp, above. In the call @@ -4808,36 +5085,33 @@ ppc_is_toc_sym (sym) that, we determine the correct reloc code and put it back in the fixup. */ -int -md_apply_fix3 (fixp, valuep, seg) - fixS *fixp; - valueT *valuep; - segT seg; +void +md_apply_fix3 (fixP, valP, seg) + fixS *fixP; + valueT * valP; + segT seg ATTRIBUTE_UNUSED; { - valueT value; + valueT value = * valP; #ifdef OBJ_ELF - value = *valuep; - if (fixp->fx_addsy != NULL) + if (fixP->fx_addsy != NULL) { /* `*valuep' may contain the value of the symbol on which the reloc will be based; we have to remove it. */ - if (symbol_used_in_reloc_p (fixp->fx_addsy) - && S_GET_SEGMENT (fixp->fx_addsy) != absolute_section - && S_GET_SEGMENT (fixp->fx_addsy) != undefined_section - && ! bfd_is_com_section (S_GET_SEGMENT (fixp->fx_addsy))) - value -= S_GET_VALUE (fixp->fx_addsy); + if (symbol_used_in_reloc_p (fixP->fx_addsy) + && S_GET_SEGMENT (fixP->fx_addsy) != absolute_section + && S_GET_SEGMENT (fixP->fx_addsy) != undefined_section + && ! bfd_is_com_section (S_GET_SEGMENT (fixP->fx_addsy))) + value -= S_GET_VALUE (fixP->fx_addsy); /* FIXME: Why '+'? Better yet, what exactly is '*valuep' supposed to be? I think this is related to various similar FIXMEs in tc-i386.c and tc-sparc.c. */ - if (fixp->fx_pcrel) - value += fixp->fx_frag->fr_address + fixp->fx_where; + if (fixP->fx_pcrel) + value += fixP->fx_frag->fr_address + fixP->fx_where; } else - { - fixp->fx_done = 1; - } + fixP->fx_done = 1; #else /* FIXME FIXME FIXME: The value we are passed in *valuep includes the symbol values. Since we are using BFD_ASSEMBLER, if we are @@ -4849,163 +5123,171 @@ md_apply_fix3 (fixp, valuep, seg) *valuep, and must use fx_offset instead. However, if the reloc is PC relative, we do want to use *valuep since it includes the result of md_pcrel_from. This is confusing. */ - if (fixp->fx_addsy == (symbolS *) NULL) - { - value = *valuep; - fixp->fx_done = 1; - } - else if (fixp->fx_pcrel) - value = *valuep; + if (fixP->fx_addsy == (symbolS *) NULL) + fixP->fx_done = 1; + + else if (fixP->fx_pcrel) + ; + else { - value = fixp->fx_offset; - if (fixp->fx_subsy != (symbolS *) NULL) + value = fixP->fx_offset; + if (fixP->fx_subsy != (symbolS *) NULL) { - if (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section) - value -= S_GET_VALUE (fixp->fx_subsy); + if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section) + value -= S_GET_VALUE (fixP->fx_subsy); else { /* We can't actually support subtracting a symbol. */ - as_bad_where (fixp->fx_file, fixp->fx_line, + as_bad_where (fixP->fx_file, fixP->fx_line, _("expression too complex")); } } } #endif - if ((int) fixp->fx_r_type >= (int) BFD_RELOC_UNUSED) + if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED) { int opindex; const struct powerpc_operand *operand; char *where; unsigned long insn; - opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED; + opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED; operand = &powerpc_operands[opindex]; #ifdef OBJ_XCOFF - /* It appears that an instruction like - l 9,LC..1(30) - when LC..1 is not a TOC symbol does not generate a reloc. It - uses the offset of LC..1 within its csect. However, .long - LC..1 will generate a reloc. I can't find any documentation - on how these cases are to be distinguished, so this is a wild - guess. These cases are generated by gcc -mminimal-toc. */ + /* An instruction like `lwz 9,sym(30)' when `sym' is not a TOC symbol + does not generate a reloc. It uses the offset of `sym' within its + csect. Other usages, such as `.long sym', generate relocs. This + is the documented behaviour of non-TOC symbols. */ if ((operand->flags & PPC_OPERAND_PARENS) != 0 && operand->bits == 16 && operand->shift == 0 && operand->insert == NULL - && fixp->fx_addsy != NULL - && symbol_get_tc (fixp->fx_addsy)->subseg != 0 - && symbol_get_tc (fixp->fx_addsy)->class != XMC_TC - && symbol_get_tc (fixp->fx_addsy)->class != XMC_TC0 - && S_GET_SEGMENT (fixp->fx_addsy) != bss_section) + && fixP->fx_addsy != NULL + && symbol_get_tc (fixP->fx_addsy)->subseg != 0 + && symbol_get_tc (fixP->fx_addsy)->class != XMC_TC + && symbol_get_tc (fixP->fx_addsy)->class != XMC_TC0 + && S_GET_SEGMENT (fixP->fx_addsy) != bss_section) { - value = fixp->fx_offset; - fixp->fx_done = 1; + value = fixP->fx_offset; + fixP->fx_done = 1; } #endif /* Fetch the instruction, insert the fully resolved operand value, and stuff the instruction back again. */ - where = fixp->fx_frag->fr_literal + fixp->fx_where; + where = fixP->fx_frag->fr_literal + fixP->fx_where; if (target_big_endian) insn = bfd_getb32 ((unsigned char *) where); else insn = bfd_getl32 ((unsigned char *) where); insn = ppc_insert_operand (insn, operand, (offsetT) value, - fixp->fx_file, fixp->fx_line); + fixP->fx_file, fixP->fx_line); if (target_big_endian) bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); else bfd_putl32 ((bfd_vma) insn, (unsigned char *) where); - if (fixp->fx_done) - { - /* Nothing else to do here. */ - return 1; - } + if (fixP->fx_done) + /* Nothing else to do here. */ + return; + + assert (fixP->fx_addsy != NULL); /* Determine a BFD reloc value based on the operand information. We are only prepared to turn a few of the operands into - relocs. - FIXME: We need to handle the DS field at the very least. - FIXME: Selecting the reloc type is a bit haphazard; perhaps - there should be a new field in the operand table. */ + relocs. */ if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 && operand->bits == 26 && operand->shift == 0) - fixp->fx_r_type = BFD_RELOC_PPC_B26; + fixP->fx_r_type = BFD_RELOC_PPC_B26; else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0 && operand->bits == 16 && operand->shift == 0) - fixp->fx_r_type = BFD_RELOC_PPC_B16; + fixP->fx_r_type = BFD_RELOC_PPC_B16; else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0 && operand->bits == 26 && operand->shift == 0) - fixp->fx_r_type = BFD_RELOC_PPC_BA26; + fixP->fx_r_type = BFD_RELOC_PPC_BA26; else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0 && operand->bits == 16 && operand->shift == 0) - fixp->fx_r_type = BFD_RELOC_PPC_BA16; + fixP->fx_r_type = BFD_RELOC_PPC_BA16; +#if defined (OBJ_XCOFF) || defined (OBJ_ELF) else if ((operand->flags & PPC_OPERAND_PARENS) != 0 && operand->bits == 16 && operand->shift == 0 - && fixp->fx_addsy != NULL - && ppc_is_toc_sym (fixp->fx_addsy)) + && ppc_is_toc_sym (fixP->fx_addsy)) { - fixp->fx_size = 2; + fixP->fx_r_type = BFD_RELOC_PPC_TOC16; +#ifdef OBJ_ELF + if (BFD_DEFAULT_TARGET_SIZE == 64 + && ppc_size == PPC_OPCODE_64 + && (operand->flags & PPC_OPERAND_DS) != 0) + fixP->fx_r_type = BFD_RELOC_PPC64_TOC16_DS; +#endif + fixP->fx_size = 2; if (target_big_endian) - fixp->fx_where += 2; - fixp->fx_r_type = BFD_RELOC_PPC_TOC16; + fixP->fx_where += 2; } +#endif /* defined (OBJ_XCOFF) || defined (OBJ_ELF) */ else { char *sfile; unsigned int sline; /* Use expr_symbol_where to see if this is an expression - symbol. */ - if (expr_symbol_where (fixp->fx_addsy, &sfile, &sline)) - as_bad_where (fixp->fx_file, fixp->fx_line, + symbol. */ + if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline)) + as_bad_where (fixP->fx_file, fixP->fx_line, _("unresolved expression that must be resolved")); else - as_bad_where (fixp->fx_file, fixp->fx_line, - _("unsupported relocation type")); - fixp->fx_done = 1; - return 1; + as_bad_where (fixP->fx_file, fixP->fx_line, + _("unsupported relocation against %s"), + S_GET_NAME (fixP->fx_addsy)); + fixP->fx_done = 1; + return; } } else { #ifdef OBJ_ELF - ppc_elf_validate_fix (fixp, seg); + ppc_elf_validate_fix (fixP, seg); #endif - switch (fixp->fx_r_type) + switch (fixP->fx_r_type) { - case BFD_RELOC_32: case BFD_RELOC_CTOR: - if (fixp->fx_pcrel) - fixp->fx_r_type = BFD_RELOC_32_PCREL; - /* fall through */ + if (BFD_DEFAULT_TARGET_SIZE == 64 && ppc_size == PPC_OPCODE_64) + goto ctor64; + /* fall through */ + + case BFD_RELOC_32: + if (fixP->fx_pcrel) + fixP->fx_r_type = BFD_RELOC_32_PCREL; + /* fall through */ case BFD_RELOC_RVA: case BFD_RELOC_32_PCREL: case BFD_RELOC_32_BASEREL: case BFD_RELOC_PPC_EMB_NADDR32: - md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where, + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, value, 4); break; case BFD_RELOC_64: - if (fixp->fx_pcrel) - fixp->fx_r_type = BFD_RELOC_64_PCREL; - /* fall through */ + ctor64: + if (fixP->fx_pcrel) + fixP->fx_r_type = BFD_RELOC_64_PCREL; + /* fall through */ + case BFD_RELOC_64_PCREL: - md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where, + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, value, 8); break; + case BFD_RELOC_LO16: case BFD_RELOC_16: case BFD_RELOC_GPREL16: @@ -5030,20 +5312,27 @@ md_apply_fix3 (fixp, valuep, seg) case BFD_RELOC_PPC_EMB_RELST_HA: case BFD_RELOC_PPC_EMB_RELSDA: case BFD_RELOC_PPC_TOC16: - if (fixp->fx_pcrel) +#ifdef OBJ_ELF +#if BFD_DEFAULT_TARGET_SIZE == 64 + case BFD_RELOC_PPC64_TOC16_LO: + case BFD_RELOC_PPC64_TOC16_HI: + case BFD_RELOC_PPC64_TOC16_HA: +#endif +#endif + if (fixP->fx_pcrel) { - if (fixp->fx_addsy != NULL) - as_bad_where (fixp->fx_file, fixp->fx_line, + if (fixP->fx_addsy != NULL) + as_bad_where (fixP->fx_file, fixP->fx_line, _("cannot emit PC relative %s relocation against %s"), - bfd_get_reloc_code_name (fixp->fx_r_type), - S_GET_NAME (fixp->fx_addsy)); + bfd_get_reloc_code_name (fixP->fx_r_type), + S_GET_NAME (fixP->fx_addsy)); else - as_bad_where (fixp->fx_file, fixp->fx_line, + as_bad_where (fixP->fx_file, fixP->fx_line, _("cannot emit PC relative %s relocation"), - bfd_get_reloc_code_name (fixp->fx_r_type)); + bfd_get_reloc_code_name (fixP->fx_r_type)); } - md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where, + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, value, 2); break; @@ -5051,109 +5340,177 @@ md_apply_fix3 (fixp, valuep, seg) lis %r3,(L1-L2)@ha where L1 and L2 are defined later. */ case BFD_RELOC_HI16: - if (fixp->fx_pcrel) + if (fixP->fx_pcrel) abort (); - md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where, - value >> 16, 2); + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, + PPC_HI (value), 2); break; + case BFD_RELOC_HI16_S: - if (fixp->fx_pcrel) + if (fixP->fx_pcrel) + abort (); + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, + PPC_HA (value), 2); + break; + +#ifdef OBJ_ELF +#if BFD_DEFAULT_TARGET_SIZE == 64 + case BFD_RELOC_PPC64_HIGHER: + if (fixP->fx_pcrel) + abort (); + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, + PPC_HIGHER (value), 2); + break; + + case BFD_RELOC_PPC64_HIGHER_S: + if (fixP->fx_pcrel) + abort (); + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, + PPC_HIGHERA (value), 2); + break; + + case BFD_RELOC_PPC64_HIGHEST: + if (fixP->fx_pcrel) + abort (); + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, + PPC_HIGHEST (value), 2); + break; + + case BFD_RELOC_PPC64_HIGHEST_S: + if (fixP->fx_pcrel) abort (); - md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where, - (value + 0x8000) >> 16, 2); + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, + PPC_HIGHESTA (value), 2); break; + case BFD_RELOC_PPC64_ADDR16_DS: + case BFD_RELOC_PPC64_ADDR16_LO_DS: + case BFD_RELOC_PPC64_GOT16_DS: + case BFD_RELOC_PPC64_GOT16_LO_DS: + case BFD_RELOC_PPC64_PLT16_LO_DS: + case BFD_RELOC_PPC64_SECTOFF_DS: + case BFD_RELOC_PPC64_SECTOFF_LO_DS: + case BFD_RELOC_PPC64_TOC16_DS: + case BFD_RELOC_PPC64_TOC16_LO_DS: + case BFD_RELOC_PPC64_PLTGOT16_DS: + case BFD_RELOC_PPC64_PLTGOT16_LO_DS: + if (fixP->fx_pcrel) + abort (); + { + unsigned char *where = fixP->fx_frag->fr_literal + fixP->fx_where; + unsigned long val; + + if (target_big_endian) + val = bfd_getb16 (where); + else + val = bfd_getl16 (where); + val |= (value & 0xfffc); + if (target_big_endian) + bfd_putb16 ((bfd_vma) val, where); + else + bfd_putl16 ((bfd_vma) val, where); + } + break; +#endif +#endif /* Because SDA21 modifies the register field, the size is set to 4 - bytes, rather than 2, so offset it here appropriately */ + bytes, rather than 2, so offset it here appropriately. */ case BFD_RELOC_PPC_EMB_SDA21: - if (fixp->fx_pcrel) + if (fixP->fx_pcrel) abort (); - md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where + ((target_big_endian) ? 2 : 0), value, 2); break; case BFD_RELOC_8: - if (fixp->fx_pcrel) + if (fixP->fx_pcrel) abort (); - md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where, + md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where, value, 1); break; case BFD_RELOC_24_PLT_PCREL: case BFD_RELOC_PPC_LOCAL24PC: - if (!fixp->fx_pcrel && !fixp->fx_done) + if (!fixP->fx_pcrel && !fixP->fx_done) abort (); - if (fixp->fx_done) - { - char *where; - unsigned long insn; - - /* Fetch the instruction, insert the fully resolved operand - value, and stuff the instruction back again. */ - where = fixp->fx_frag->fr_literal + fixp->fx_where; - if (target_big_endian) - insn = bfd_getb32 ((unsigned char *) where); - else - insn = bfd_getl32 ((unsigned char *) where); - if ((value & 3) != 0) - as_bad_where (fixp->fx_file, fixp->fx_line, - _("must branch to an address a multiple of 4")); - if ((offsetT) value < -0x40000000 - || (offsetT) value >= 0x40000000) - as_bad_where (fixp->fx_file, fixp->fx_line, - _("@local or @plt branch destination is too far away, %ld bytes"), - value); - insn = insn | (value & 0x03fffffc); - if (target_big_endian) - bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); - else - bfd_putl32 ((bfd_vma) insn, (unsigned char *) where); - } + if (fixP->fx_done) + { + char *where; + unsigned long insn; + + /* Fetch the instruction, insert the fully resolved operand + value, and stuff the instruction back again. */ + where = fixP->fx_frag->fr_literal + fixP->fx_where; + if (target_big_endian) + insn = bfd_getb32 ((unsigned char *) where); + else + insn = bfd_getl32 ((unsigned char *) where); + if ((value & 3) != 0) + as_bad_where (fixP->fx_file, fixP->fx_line, + _("must branch to an address a multiple of 4")); + if ((offsetT) value < -0x40000000 + || (offsetT) value >= 0x40000000) + as_bad_where (fixP->fx_file, fixP->fx_line, + _("@local or @plt branch destination is too far away, %ld bytes"), + (long) value); + insn = insn | (value & 0x03fffffc); + if (target_big_endian) + bfd_putb32 ((bfd_vma) insn, (unsigned char *) where); + else + bfd_putl32 ((bfd_vma) insn, (unsigned char *) where); + } break; case BFD_RELOC_VTABLE_INHERIT: - fixp->fx_done = 0; - if (fixp->fx_addsy - && !S_IS_DEFINED (fixp->fx_addsy) - && !S_IS_WEAK (fixp->fx_addsy)) - S_SET_WEAK (fixp->fx_addsy); + fixP->fx_done = 0; + if (fixP->fx_addsy + && !S_IS_DEFINED (fixP->fx_addsy) + && !S_IS_WEAK (fixP->fx_addsy)) + S_SET_WEAK (fixP->fx_addsy); break; case BFD_RELOC_VTABLE_ENTRY: - fixp->fx_done = 0; + fixP->fx_done = 0; break; +#ifdef OBJ_ELF +#if BFD_DEFAULT_TARGET_SIZE == 64 + /* Generated by reference to `sym@tocbase'. The sym is + ignored by the linker. */ + case BFD_RELOC_PPC64_TOC: + fixP->fx_done = 0; + break; +#endif +#endif default: fprintf (stderr, - _("Gas failure, reloc value %d\n"), fixp->fx_r_type); - fflush(stderr); + _("Gas failure, reloc value %d\n"), fixP->fx_r_type); + fflush (stderr); abort (); } } #ifdef OBJ_ELF - fixp->fx_addnumber = value; + fixP->fx_addnumber = value; #else - if (fixp->fx_r_type != BFD_RELOC_PPC_TOC16) - fixp->fx_addnumber = 0; + if (fixP->fx_r_type != BFD_RELOC_PPC_TOC16) + fixP->fx_addnumber = 0; else { #ifdef TE_PE - fixp->fx_addnumber = 0; + fixP->fx_addnumber = 0; #else /* We want to use the offset within the data segment of the symbol, not the actual VMA of the symbol. */ - fixp->fx_addnumber = - - bfd_get_section_vma (stdoutput, S_GET_SEGMENT (fixp->fx_addsy)); + fixP->fx_addnumber = + - bfd_get_section_vma (stdoutput, S_GET_SEGMENT (fixP->fx_addsy)); #endif } #endif - - return 1; } /* Generate a reloc for a fixup. */ @@ -5174,7 +5531,8 @@ tc_gen_reloc (seg, fixp) if (reloc->howto == (reloc_howto_type *) NULL) { as_bad_where (fixp->fx_file, fixp->fx_line, - _("reloc %d not supported by object file format"), (int)fixp->fx_r_type); + _("reloc %d not supported by object file format"), + (int) fixp->fx_r_type); return NULL; } reloc->addend = fixp->fx_addnumber; diff --git a/contrib/binutils/gas/config/tc-ppc.h b/contrib/binutils/gas/config/tc-ppc.h index c2876bf..f4d2f86 100644 --- a/contrib/binutils/gas/config/tc-ppc.h +++ b/contrib/binutils/gas/config/tc-ppc.h @@ -1,5 +1,5 @@ /* tc-ppc.h -- Header file for tc-ppc.c. - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. @@ -56,7 +56,7 @@ extern int target_big_endian; /* The target BFD format. */ #define TARGET_FORMAT (ppc_target_format ()) -extern char* ppc_target_format (); +extern char *ppc_target_format PARAMS ((void)); /* Permit temporary numeric labels. */ #define LOCAL_LABELS_FB 1 @@ -82,8 +82,34 @@ extern char* ppc_target_format (); /* We don't need to handle .word strangely. */ #define WORKING_DOT_WORD -/* We set the fx_done field appropriately in md_apply_fix. */ -#define TC_HANDLES_FX_DONE +#define MAX_MEM_FOR_RS_ALIGN_CODE 4 +#define HANDLE_ALIGN(FRAGP) \ + if ((FRAGP)->fr_type == rs_align_code) \ + { \ + valueT count = ((FRAGP)->fr_next->fr_address \ + - ((FRAGP)->fr_address + (FRAGP)->fr_fix)); \ + if (count != 0 && (count & 3) == 0) \ + { \ + unsigned char *dest = (FRAGP)->fr_literal + (FRAGP)->fr_fix; \ + \ + (FRAGP)->fr_var = 4; \ + if (target_big_endian) \ + { \ + *dest++ = 0x60; \ + *dest++ = 0; \ + *dest++ = 0; \ + *dest++ = 0; \ + } \ + else \ + { \ + *dest++ = 0; \ + *dest++ = 0; \ + *dest++ = 0; \ + *dest++ = 0x60; \ + } \ + } \ + } + #ifdef TE_PE @@ -197,6 +223,8 @@ do { \ || (FIXP)->fx_r_type == BFD_RELOC_PPC_B16_BRNTAKEN \ || (FIXP)->fx_r_type == BFD_RELOC_PPC_BA16_BRTAKEN \ || (FIXP)->fx_r_type == BFD_RELOC_PPC_BA16_BRNTAKEN \ + || (BFD_DEFAULT_TARGET_SIZE == 64 \ + && (FIXP)->fx_r_type == BFD_RELOC_PPC64_TOC) \ || (FIXP)->fx_r_type == BFD_RELOC_VTABLE_INHERIT \ || (FIXP)->fx_r_type == BFD_RELOC_VTABLE_ENTRY) @@ -216,6 +244,12 @@ extern int ppc_section_flags PARAMS ((int, int, int)); #define md_elf_section_word(STR, LEN) ppc_section_word (STR, LEN) #define md_elf_section_flags(FLAGS, ATTR, TYPE) ppc_section_flags (FLAGS, ATTR, TYPE) +#if BFD_DEFAULT_TARGET_SIZE == 64 +/* Extra sections for 64-bit ELF PPC. */ +#define ELF_TC_SPECIAL_SECTIONS \ + { ".toc", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE}, \ + { ".tocbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE}, +#else /* Add extra PPC sections -- Note, for now, make .sbss2 and .PPC.EMB.sbss0 a normal section, and not a bss section so that the linker doesn't crater when trying to make more than 2 sections. */ @@ -227,26 +261,14 @@ extern int ppc_section_flags PARAMS ((int, int, int)); { ".sbss2", SHT_PROGBITS, SHF_ALLOC }, \ { ".PPC.EMB.sdata0", SHT_PROGBITS, SHF_ALLOC }, \ { ".PPC.EMB.sbss0", SHT_PROGBITS, SHF_ALLOC }, +#endif #define tc_comment_chars ppc_comment_chars extern const char *ppc_comment_chars; /* Keep relocations relative to the GOT, or non-PC relative. */ -#define tc_fix_adjustable(FIX) \ - ((FIX)->fx_r_type != BFD_RELOC_16_GOTOFF \ - && (FIX)->fx_r_type != BFD_RELOC_LO16_GOTOFF \ - && (FIX)->fx_r_type != BFD_RELOC_HI16_GOTOFF \ - && (FIX)->fx_r_type != BFD_RELOC_HI16_S_GOTOFF \ - && (FIX)->fx_r_type != BFD_RELOC_GPREL16 \ - && (FIX)->fx_r_type != BFD_RELOC_VTABLE_INHERIT \ - && (FIX)->fx_r_type != BFD_RELOC_VTABLE_ENTRY \ - && ! S_IS_EXTERNAL ((FIX)->fx_addsy) \ - && ! S_IS_WEAK ((FIX)->fx_addsy) \ - && ((FIX)->fx_pcrel \ - || ((FIX)->fx_subsy != NULL \ - && (S_GET_SEGMENT ((FIX)->fx_subsy) \ - == S_GET_SEGMENT ((FIX)->fx_addsy))) \ - || S_IS_LOCAL ((FIX)->fx_addsy))) +#define tc_fix_adjustable(fixp) ppc_fix_adjustable (fixp) +extern int ppc_fix_adjustable PARAMS ((struct fix *)); /* We must never ever try to resolve references to externally visible symbols in the assembler, because the .o file might go into a shared @@ -258,17 +280,20 @@ extern const char *ppc_comment_chars; && S_IS_DEFINED ((FIX)->fx_addsy) \ && ! S_IS_COMMON ((FIX)->fx_addsy))) +#if BFD_DEFAULT_TARGET_SIZE == 64 +/* Finish up the symbol. */ +#define tc_frob_symbol(sym, punt) punt = ppc_elf_frob_symbol (sym) +extern int ppc_elf_frob_symbol PARAMS ((symbolS *)); +#endif + #define DWARF2_LINE_MIN_INSN_LENGTH 4 #endif /* OBJ_ELF */ -/* call md_apply_fix3 with segment instead of md_apply_fix */ -#define MD_APPLY_FIX3 - /* call md_pcrel_from_section, not md_pcrel_from */ #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC) extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); -#define md_parse_name(name, exp) ppc_parse_name (name, exp) +#define md_parse_name(name, exp, c) ppc_parse_name (name, exp) extern int ppc_parse_name PARAMS ((const char *, struct expressionS *)); #define md_operand(x) diff --git a/contrib/binutils/gas/config/tc-sparc.c b/contrib/binutils/gas/config/tc-sparc.c index 558dc89..fe9f3f7 100644 --- a/contrib/binutils/gas/config/tc-sparc.c +++ b/contrib/binutils/gas/config/tc-sparc.c @@ -20,9 +20,9 @@ Boston, MA 02111-1307, USA. */ #include <stdio.h> -#include <ctype.h> #include "as.h" +#include "safe-ctype.h" #include "subsegs.h" #include "opcode/sparc.h" @@ -632,12 +632,12 @@ md_show_usage (stream) continue; if (arch != &sparc_arch_table[0]) fprintf (stream, " | "); - if (column + strlen(arch->name) > 70) + if (column + strlen (arch->name) > 70) { column = 0; fputc ('\n', stream); } - column += 5 + 2 + strlen(arch->name); + column += 5 + 2 + strlen (arch->name); fprintf (stream, "-A%s", arch->name); } for (arch = &sparc_arch_table[0]; arch->name; arch++) @@ -645,12 +645,12 @@ md_show_usage (stream) if (!arch->user_option_p) continue; fprintf (stream, " | "); - if (column + strlen(arch->name) > 65) + if (column + strlen (arch->name) > 65) { column = 0; fputc ('\n', stream); } - column += 5 + 7 + strlen(arch->name); + column += 5 + 7 + strlen (arch->name); fprintf (stream, "-xarch=%s", arch->name); } fprintf (stream, _("\n\ @@ -1385,11 +1385,11 @@ sparc_ip (str, pinsn) int special_case = SPECIAL_CASE_NONE; s = str; - if (islower ((unsigned char) *s)) + if (ISLOWER (*s)) { do ++s; - while (islower ((unsigned char) *s) || isdigit ((unsigned char) *s)); + while (ISLOWER (*s) || ISDIGIT (*s)); } switch (*s) @@ -1617,11 +1617,11 @@ sparc_ip (str, pinsn) { s += 4; - if (isdigit ((unsigned char) *s)) + if (ISDIGIT (*s)) { long num = 0; - while (isdigit ((unsigned char) *s)) + while (ISDIGIT (*s)) { num = num * 10 + *s - '0'; ++s; @@ -1825,9 +1825,9 @@ sparc_ip (str, pinsn) break; case '#': /* Must be at least one digit. */ - if (isdigit ((unsigned char) *s++)) + if (ISDIGIT (*s++)) { - while (isdigit ((unsigned char) *s)) + while (ISDIGIT (*s)) { ++s; } @@ -1846,10 +1846,10 @@ sparc_ip (str, pinsn) case 'b': /* Next operand is a coprocessor register. */ case 'c': case 'D': - if (*s++ == '%' && *s++ == 'c' && isdigit ((unsigned char) *s)) + if (*s++ == '%' && *s++ == 'c' && ISDIGIT (*s)) { mask = *s++; - if (isdigit ((unsigned char) *s)) + if (ISDIGIT (*s)) { mask = 10 * (mask - '0') + (*s++ - '0'); if (mask >= 32) @@ -1942,7 +1942,7 @@ sparc_ip (str, pinsn) goto error; case 'r': /* any register */ - if (!isdigit ((unsigned char) (c = *s++))) + if (!ISDIGIT ((c = *s++))) { goto error; } @@ -1957,7 +1957,7 @@ sparc_ip (str, pinsn) case '7': case '8': case '9': - if (isdigit ((unsigned char) *s)) + if (ISDIGIT (*s)) { if ((c = 10 * (c - '0') + (*s++ - '0')) >= 32) { @@ -2022,9 +2022,9 @@ sparc_ip (str, pinsn) if (*s++ == '%' && ((format = *s) == 'f') - && isdigit ((unsigned char) *++s)) + && ISDIGIT (*++s)) { - for (mask = 0; isdigit ((unsigned char) *s); ++s) + for (mask = 0; ISDIGIT (*s); ++s) { mask = 10 * mask + (*s - '0'); } /* read the number */ @@ -2240,7 +2240,7 @@ sparc_ip (str, pinsn) for (s1 = s; *s1 && *s1 != ',' && *s1 != ']'; s1++) ; - if (s1 != s && isdigit ((unsigned char) s1[-1])) + if (s1 != s && ISDIGIT (s1[-1])) { if (s1[-2] == '%' && s1[-3] == '+') s1 -= 3; @@ -2663,7 +2663,7 @@ parse_keyword_arg (lookup_fn, input_pointerP, valueP) p = *input_pointerP; for (q = p + (*p == '#' || *p == '%'); - isalnum ((unsigned char) *q) || *q == '_'; + ISALNUM (*q) || *q == '_'; ++q) continue; c = *q; @@ -2881,18 +2881,16 @@ md_number_to_chars (buf, val, n) /* Apply a fixS to the frags, now that we know the value it ought to hold. */ -int -md_apply_fix3 (fixP, value, segment) +void +md_apply_fix3 (fixP, valP, segment) fixS *fixP; - valueT *value; + valueT *valP; segT segment; { char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; - offsetT val; + offsetT val = * (offsetT *) valP; long insn; - val = *value; - assert (fixP->fx_r_type < BFD_RELOC_UNUSED); fixP->fx_addnumber = val; /* Remember value for emit_reloc. */ @@ -2905,22 +2903,25 @@ md_apply_fix3 (fixP, value, segment) don't want to include the value of an externally visible symbol. */ if (fixP->fx_addsy != NULL) { - if (symbol_used_in_reloc_p (fixP->fx_addsy) - && (S_IS_EXTERNAL (fixP->fx_addsy) - || S_IS_WEAK (fixP->fx_addsy) + symbolS * sym = fixP->fx_addsy; + segT seg = S_GET_SEGMENT (sym); + + if (symbol_used_in_reloc_p (sym) + && (S_IS_EXTERNAL (sym) + || S_IS_WEAK (sym) + || (seg->flags & SEC_MERGE) || (sparc_pic_code && ! fixP->fx_pcrel) - || (S_GET_SEGMENT (fixP->fx_addsy) != segment - && ((bfd_get_section_flags (stdoutput, - S_GET_SEGMENT (fixP->fx_addsy)) - & SEC_LINK_ONCE) != 0 - || strncmp (segment_name (S_GET_SEGMENT (fixP->fx_addsy)), - ".gnu.linkonce", - sizeof ".gnu.linkonce" - 1) == 0))) - && S_GET_SEGMENT (fixP->fx_addsy) != absolute_section - && S_GET_SEGMENT (fixP->fx_addsy) != undefined_section - && ! bfd_is_com_section (S_GET_SEGMENT (fixP->fx_addsy))) - fixP->fx_addnumber -= S_GET_VALUE (fixP->fx_addsy); - return 1; + || (seg != segment + && (((bfd_get_section_flags (stdoutput, seg) & SEC_LINK_ONCE) != 0) + || (strncmp (segment_name (seg), + ".gnu.linkonce", + sizeof ".gnu.linkonce" - 1) == 0)))) + && seg != absolute_section + && seg != undefined_section + && ! bfd_is_com_section (seg)) + fixP->fx_addnumber -= S_GET_VALUE (sym); + + return; } #endif @@ -2991,7 +2992,7 @@ md_apply_fix3 (fixP, value, segment) || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY) { fixP->fx_done = 0; - return 1; + return; } else { @@ -3163,14 +3164,10 @@ md_apply_fix3 (fixP, value, segment) case BFD_RELOC_SPARC_LM22: case BFD_RELOC_HI22: if (!fixP->fx_addsy) - { - insn |= (val >> 10) & 0x3fffff; - } + insn |= (val >> 10) & 0x3fffff; else - { - /* FIXME: Need comment explaining why we do this. */ - insn &= ~0xffff; - } + /* FIXME: Need comment explaining why we do this. */ + insn &= ~0xffff; break; case BFD_RELOC_SPARC22: @@ -3186,14 +3183,10 @@ md_apply_fix3 (fixP, value, segment) case BFD_RELOC_LO10: if (!fixP->fx_addsy) - { - insn |= val & 0x3ff; - } + insn |= val & 0x3ff; else - { - /* FIXME: Need comment explaining why we do this. */ - insn &= ~0xff; - } + /* FIXME: Need comment explaining why we do this. */ + insn &= ~0xff; break; case BFD_RELOC_SPARC_OLO10: @@ -3264,8 +3257,6 @@ md_apply_fix3 (fixP, value, segment) /* Are we finished with this relocation now? */ if (fixP->fx_addsy == 0 && !fixP->fx_pcrel) fixP->fx_done = 1; - - return 1; } /* Translate internal representation of relocation info to BFD target @@ -3322,6 +3313,12 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_SPARC_UA16: case BFD_RELOC_SPARC_UA32: case BFD_RELOC_SPARC_UA64: + case BFD_RELOC_8_PCREL: + case BFD_RELOC_16_PCREL: + case BFD_RELOC_32_PCREL: + case BFD_RELOC_64_PCREL: + case BFD_RELOC_SPARC_PLT32: + case BFD_RELOC_SPARC_PLT64: case BFD_RELOC_VTABLE_ENTRY: case BFD_RELOC_VTABLE_INHERIT: code = fixp->fx_r_type; @@ -3411,9 +3408,11 @@ tc_gen_reloc (section, fixp) #else /* elf or coff */ - if (reloc->howto->pc_relative == 0 - || code == BFD_RELOC_SPARC_PC10 - || code == BFD_RELOC_SPARC_PC22) + if (code != BFD_RELOC_32_PCREL_S2 + && code != BFD_RELOC_SPARC_WDISP22 + && code != BFD_RELOC_SPARC_WDISP16 + && code != BFD_RELOC_SPARC_WDISP19 + && code != BFD_RELOC_SPARC_WPLT30) reloc->addend = fixp->fx_addnumber; else if (symbol_section_p (fixp->fx_addsy)) reloc->addend = (section->vma @@ -3909,6 +3908,11 @@ s_proc (ignore) static int sparc_no_align_cons = 0; +/* This static variable is set by sparc_cons to emit requested types + of relocations in cons_fix_new_sparc. */ + +static const char *sparc_cons_special_reloc; + /* This handles the unaligned space allocation pseudo-ops, such as .uaword. .uaword is just like .word, but the value does not need to be aligned. */ @@ -3920,6 +3924,7 @@ s_uacons (bytes) /* Tell sparc_cons_align not to align this value. */ sparc_no_align_cons = 1; cons (bytes); + sparc_no_align_cons = 0; } /* This handles the native word allocation pseudo-op .nword. @@ -4180,6 +4185,134 @@ sparc_elf_final_processing () else if (current_architecture == SPARC_OPCODE_ARCH_V9B) elf_elfheader (stdoutput)->e_flags |= EF_SPARC_SUN_US1|EF_SPARC_SUN_US3; } + +void +sparc_cons (exp, size) + expressionS *exp; + int size; +{ + char *save; + + SKIP_WHITESPACE (); + sparc_cons_special_reloc = NULL; + save = input_line_pointer; + if (input_line_pointer[0] == '%' + && input_line_pointer[1] == 'r' + && input_line_pointer[2] == '_') + { + if (strncmp (input_line_pointer + 3, "disp", 4) == 0) + { + input_line_pointer += 7; + sparc_cons_special_reloc = "disp"; + } + else if (strncmp (input_line_pointer + 3, "plt", 3) == 0) + { + if (size != 4 && size != 8) + as_bad (_("Illegal operands: %%r_plt in %d-byte data field"), size); + else + { + input_line_pointer += 6; + sparc_cons_special_reloc = "plt"; + } + } + if (sparc_cons_special_reloc) + { + int bad = 0; + + switch (size) + { + case 1: + if (*input_line_pointer != '8') + bad = 1; + input_line_pointer--; + break; + case 2: + if (input_line_pointer[0] != '1' || input_line_pointer[1] != '6') + bad = 1; + break; + case 4: + if (input_line_pointer[0] != '3' || input_line_pointer[1] != '2') + bad = 1; + break; + case 8: + if (input_line_pointer[0] != '6' || input_line_pointer[1] != '4') + bad = 1; + break; + default: + bad = 1; + break; + } + + if (bad) + { + as_bad (_("Illegal operands: Only %%r_%s%d allowed in %d-byte data fields"), + sparc_cons_special_reloc, size * 8, size); + } + else + { + input_line_pointer += 2; + if (*input_line_pointer != '(') + { + as_bad (_("Illegal operands: %%r_%s%d requires arguments in ()"), + sparc_cons_special_reloc, size * 8); + bad = 1; + } + } + + if (bad) + { + input_line_pointer = save; + sparc_cons_special_reloc = NULL; + } + else + { + int c; + char *end = ++input_line_pointer; + int npar = 0; + + while (! is_end_of_line[(c = *end)]) + { + if (c == '(') + npar++; + else if (c == ')') + { + if (!npar) + break; + npar--; + } + end++; + } + + if (c != ')') + as_bad (_("Illegal operands: %%r_%s%d requires arguments in ()"), + sparc_cons_special_reloc, size * 8); + else + { + *end = '\0'; + expression (exp); + *end = c; + if (input_line_pointer != end) + { + as_bad (_("Illegal operands: %%r_%s%d requires arguments in ()"), + sparc_cons_special_reloc, size * 8); + } + else + { + input_line_pointer++; + SKIP_WHITESPACE (); + c = *input_line_pointer; + if (! is_end_of_line[c] && c != ',') + as_bad (_("Illegal operands: garbage after %%r_%s%d()"), + sparc_cons_special_reloc, size * 8); + } + } + } + } + } + if (sparc_cons_special_reloc == NULL) + expression (exp); +} + #endif /* This is called by emit_expr via TC_CONS_FIX_NEW when creating a @@ -4204,7 +4337,25 @@ cons_fix_new_sparc (frag, where, nbytes, exp) && now_seg->flags & SEC_ALLOC) r = BFD_RELOC_SPARC_REV32; - if (sparc_no_align_cons) + if (sparc_cons_special_reloc) + { + if (*sparc_cons_special_reloc == 'd') + switch (nbytes) + { + case 1: r = BFD_RELOC_8_PCREL; break; + case 2: r = BFD_RELOC_16_PCREL; break; + case 4: r = BFD_RELOC_32_PCREL; break; + case 8: r = BFD_RELOC_64_PCREL; break; + default: abort (); + } + else + switch (nbytes) + { + case 4: r = BFD_RELOC_SPARC_PLT32; break; + case 8: r = BFD_RELOC_SPARC_PLT64; break; + } + } + else if (sparc_no_align_cons) { switch (nbytes) { @@ -4213,8 +4364,7 @@ cons_fix_new_sparc (frag, where, nbytes, exp) case 8: r = BFD_RELOC_SPARC_UA64; break; default: abort (); } - sparc_no_align_cons = 0; - } + } fix_new_exp (frag, where, (int) nbytes, exp, 0, r); } diff --git a/contrib/binutils/gas/config/tc-sparc.h b/contrib/binutils/gas/config/tc-sparc.h index ce19f5d..5d545de 100644 --- a/contrib/binutils/gas/config/tc-sparc.h +++ b/contrib/binutils/gas/config/tc-sparc.h @@ -1,6 +1,6 @@ /* tc-sparc.h - Macros and type defines for the sparc. Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000 Free Software Foundation, Inc. + 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -54,7 +54,7 @@ extern const char *sparc_target_format PARAMS ((void)); #define md_convert_frag(b,s,f) \ as_fatal (_("sparc convert_frag\n")) #define md_estimate_size_before_relax(f,s) \ - (as_fatal(_("estimate_size_before_relax called")), 1) + (as_fatal (_("estimate_size_before_relax called")), 1) #define LISTING_HEADER "SPARC GAS " @@ -110,9 +110,6 @@ extern void sparc_handle_align PARAMS ((struct frag *)); extern int elf32_sparc_force_relocation PARAMS ((struct fix *)); #endif -#define MD_APPLY_FIX3 -#define TC_HANDLES_FX_DONE - #ifdef OBJ_ELF /* Keep relocations against global symbols. Don't turn them into relocations against sections. This is required for the dynamic @@ -169,6 +166,11 @@ extern void sparc_md_end PARAMS ((void)); #endif +#ifdef OBJ_ELF +#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) sparc_cons (EXP, NBYTES) +extern void sparc_cons PARAMS ((expressionS *, int)); +#endif + #define TC_CONS_FIX_NEW cons_fix_new_sparc extern void cons_fix_new_sparc PARAMS ((struct frag *, int, unsigned int, struct expressionS *)); diff --git a/contrib/binutils/gas/configure b/contrib/binutils/gas/configure index 5545d4b..c1282ed 100755 --- a/contrib/binutils/gas/configure +++ b/contrib/binutils/gas/configure @@ -55,7 +55,6 @@ program_suffix=NONE program_transform_name=s,x,x, silent= site= -sitefile= srcdir= target=NONE verbose= @@ -170,7 +169,6 @@ Configuration: --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages - --site-file=FILE use FILE as the site file --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX @@ -341,11 +339,6 @@ EOF -site=* | --site=* | --sit=*) site="$ac_optarg" ;; - -site-file | --site-file | --site-fil | --site-fi | --site-f) - ac_prev=sitefile ;; - -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) - sitefile="$ac_optarg" ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) @@ -511,16 +504,12 @@ fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. -if test -z "$sitefile"; then - if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -else - CONFIG_SITE="$sitefile" fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then @@ -559,12 +548,12 @@ else fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:563: checking for Cygwin environment" >&5 +echo "configure:552: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 568 "configure" +#line 557 "configure" #include "confdefs.h" int main() { @@ -575,7 +564,7 @@ int main() { return __CYGWIN__; ; return 0; } EOF -if { (eval echo configure:579: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -592,19 +581,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6 CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:596: checking for mingw32 environment" >&5 +echo "configure:585: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 601 "configure" +#line 590 "configure" #include "confdefs.h" int main() { return __MINGW32__; ; return 0; } EOF -if { (eval echo configure:608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -669,7 +658,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:673: checking host system type" >&5 +echo "configure:662: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -690,7 +679,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:694: checking target system type" >&5 +echo "configure:683: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -708,7 +697,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:712: checking build system type" >&5 +echo "configure:701: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -733,7 +722,7 @@ test "$host_alias" != "$target_alias" && # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:737: checking for $ac_word" >&5 +echo "configure:726: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -763,7 +752,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:767: checking for $ac_word" >&5 +echo "configure:756: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -814,7 +803,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:818: checking for $ac_word" >&5 +echo "configure:807: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -846,7 +835,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:850: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:839: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -857,12 +846,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 861 "configure" +#line 850 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -888,12 +877,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:892: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:881: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:897: checking whether we are using GNU C" >&5 +echo "configure:886: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -902,7 +891,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -921,7 +910,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:925: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:914: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -953,7 +942,7 @@ else fi echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:957: checking for POSIXized ISC" >&5 +echo "configure:946: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then @@ -987,7 +976,7 @@ BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ ]*\([^ ]*\)[ ]*).*/\1/p' < ${ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:991: checking for a BSD compatible install" >&5 +echo "configure:980: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1040,7 +1029,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:1044: checking whether build environment is sane" >&5 +echo "configure:1033: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -1097,7 +1086,7 @@ test "$program_suffix" != NONE && test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:1101: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:1090: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1143,7 +1132,7 @@ EOF missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:1147: checking for working aclocal" >&5 +echo "configure:1136: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1156,7 +1145,7 @@ else fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:1160: checking for working autoconf" >&5 +echo "configure:1149: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1169,7 +1158,7 @@ else fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:1173: checking for working automake" >&5 +echo "configure:1162: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1182,7 +1171,7 @@ else fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:1186: checking for working autoheader" >&5 +echo "configure:1175: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1195,7 +1184,7 @@ else fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:1199: checking for working makeinfo" >&5 +echo "configure:1188: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1213,7 +1202,7 @@ fi if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) @@ -1236,7 +1225,7 @@ fi if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) @@ -1259,7 +1248,7 @@ fi if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} -case "$enableval" in +case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) @@ -1287,10 +1276,10 @@ else fi ac_prog=ld -if test "$ac_cv_prog_gcc" = yes; then +if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1294: checking for ld used by GCC" >&5 +echo "configure:1283: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -1298,7 +1287,7 @@ echo "configure:1294: checking for ld used by GCC" >&5 *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac - case "$ac_prog" in + case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' @@ -1320,12 +1309,12 @@ echo "configure:1294: checking for ld used by GCC" >&5 esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1324: checking for GNU ld" >&5 +echo "configure:1313: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1327: checking for non-GNU ld" >&5 +echo "configure:1316: checking for non-GNU ld" >&5 fi -if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then +if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -z "$LD"; then @@ -1333,11 +1322,11 @@ else for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - ac_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. - if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break @@ -1346,11 +1335,11 @@ else done IFS="$ac_save_ifs" else - ac_cv_path_LD="$LD" # Let the user override the test with a path. + lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi -LD="$ac_cv_path_LD" +LD="$lt_cv_path_LD" if test -n "$LD"; then echo "$ac_t""$LD" 1>&6 else @@ -1358,24 +1347,24 @@ else fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1362: checking if the linker ($LD) is GNU ld" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then +echo "configure:1351: checking if the linker ($LD) is GNU ld" >&5 +if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then - ac_cv_prog_gnu_ld=yes + lt_cv_prog_gnu_ld=yes else - ac_cv_prog_gnu_ld=no + lt_cv_prog_gnu_ld=no fi fi -echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 -with_gnu_ld=$ac_cv_prog_gnu_ld +echo "$ac_t""$lt_cv_prog_gnu_ld" 1>&6 +with_gnu_ld=$lt_cv_prog_gnu_ld echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 -echo "configure:1379: checking for $LD option to reload object files" >&5 +echo "configure:1368: checking for $LD option to reload object files" >&5 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1387,13 +1376,13 @@ reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1391: checking for BSD-compatible nm" >&5 -if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then +echo "configure:1380: checking for BSD-compatible nm" >&5 +if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$NM"; then # Let the user override the test. - ac_cv_path_NM="$NM" + lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do @@ -1405,27 +1394,27 @@ else # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then - ac_cv_path_NM="$tmp_nm -B" + lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$tmp_nm -p" + lt_cv_path_NM="$tmp_nm -p" break else - ac_cv_path_NM=${ac_cv_path_NM="$tmp_nm"} # keep the first match, but + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" - test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi -NM="$ac_cv_path_NM" +NM="$lt_cv_path_NM" echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1429: checking whether ln -s works" >&5 +echo "configure:1418: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1446,7 +1435,7 @@ else fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 -echo "configure:1450: checking how to recognise dependant libraries" >&5 +echo "configure:1439: checking how to recognise dependant libraries" >&5 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1464,8 +1453,8 @@ lt_cv_deplibs_check_method='unknown' # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. -case "$host_os" in -aix4*) +case $host_os in +aix*) lt_cv_deplibs_check_method=pass_all ;; @@ -1474,8 +1463,8 @@ beos*) ;; bsdi4*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; @@ -1484,14 +1473,27 @@ cygwin* | mingw* |pw32*) lt_cv_file_magic_cmd='$OBJDUMP -f' ;; +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.012) + lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + freebsd* ) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case "$host_cpu" in + case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac @@ -1504,29 +1506,28 @@ gnu*) lt_cv_deplibs_check_method=pass_all ;; -hpux10.20*) - # TODO: Does this work for hpux-11 too? - lt_cv_deplibs_check_method='file_magic (s0-90-90-9|PA-RISC0-9.0-9) shared library' +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6*) - case "$host_os" in + case $host_os in irix5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) - case "$LD" in + case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" - ;; + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all @@ -1534,25 +1535,30 @@ irix5* | irix6*) # This must be Linux ELF. linux-gnu*) - case "$host_cpu" in - alpha* | i*86 | powerpc* | sparc* | ia64* ) + case $host_cpu in + alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; - esac + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; + esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then : + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' else - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' fi ;; +newsos6) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' @@ -1569,14 +1575,18 @@ solaris*) lt_cv_file_magic_test_file=/lib/libc.so ;; +sysv5uw[78]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case "$host_vendor" in + case $host_vendor in ncr) lt_cv_deplibs_check_method=pass_all ;; motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; esac ;; @@ -1589,13 +1599,13 @@ file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method echo $ac_n "checking for object suffix""... $ac_c" 1>&6 -echo "configure:1593: checking for object suffix" >&5 +echo "configure:1603: checking for object suffix" >&5 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftest* echo 'int i = 1;' > conftest.$ac_ext -if { (eval echo configure:1599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -1615,7 +1625,7 @@ ac_objext=$ac_cv_objext echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1619: checking for executable suffix" >&5 +echo "configure:1629: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1625,10 +1635,10 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done @@ -1654,15 +1664,15 @@ fi # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # Only perform the check for file, if the check method requires it -case "$deplibs_check_method" in +case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 -echo "configure:1662: checking for ${ac_tool_prefix}file" >&5 +echo "configure:1672: checking for ${ac_tool_prefix}file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - case "$MAGIC_CMD" in + case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; @@ -1678,7 +1688,7 @@ else if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then - case "$deplibs_check_method" in + case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" @@ -1720,11 +1730,11 @@ fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo $ac_n "checking for file""... $ac_c" 1>&6 -echo "configure:1724: checking for file" >&5 +echo "configure:1734: checking for file" >&5 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - case "$MAGIC_CMD" in + case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; @@ -1740,7 +1750,7 @@ else if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then - case "$deplibs_check_method" in + case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" @@ -1791,7 +1801,7 @@ esac # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1795: checking for $ac_word" >&5 +echo "configure:1805: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1823,7 +1833,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1827: checking for $ac_word" >&5 +echo "configure:1837: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1858,7 +1868,7 @@ fi # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1862: checking for $ac_word" >&5 +echo "configure:1872: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1890,7 +1900,7 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1894: checking for $ac_word" >&5 +echo "configure:1904: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1928,8 +1938,8 @@ libtool_flags="--cache-file=$cache_file" test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" +test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc" +test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" # Check whether --enable-libtool-lock or --disable-libtool-lock was given. @@ -1954,12 +1964,12 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" # Some flags need to be propagated to the compiler or linker for good # libtool support. -case "$host" in +case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1961 "configure"' > conftest.$ac_ext - if { (eval echo configure:1962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - case "`/usr/bin/file conftest.o`" in + echo '#line 1971 "configure"' > conftest.$ac_ext + if { (eval echo configure:1972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; @@ -1979,7 +1989,7 @@ case "$host" in SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:1983: checking whether the C compiler needs -belf" >&5 +echo "configure:1993: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1992,14 +2002,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <<EOF -#line 1996 "configure" +#line 2006 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:2003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else @@ -2109,7 +2119,6 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' # clobbered by the next message. exec 5>>./config.log - @@ -2148,7 +2157,7 @@ fi using_cgen=no -build_warnings="-W -Wall" +build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" # Check whether --enable-build-warnings or --disable-build-warnings was given. if test "${enable_build_warnings+set}" = set; then enableval="$enable_build_warnings" @@ -2255,9 +2264,13 @@ for this_target in $target $canon_targets ; do mips*) cpu_type=mips endian=big ;; pjl*) cpu_type=pj endian=little ;; pj*) cpu_type=pj endian=big ;; - powerpcle*) cpu_type=ppc endian=little ;; + powerpc*le*) cpu_type=ppc endian=little ;; powerpc*) cpu_type=ppc endian=big ;; rs6000*) cpu_type=ppc ;; + s390x*) cpu_type=s390 arch=s390x ;; + s390*) cpu_type=s390 arch=s390 ;; + sh*le) cpu_type=sh endian=little ;; + sh*) cpu_type=sh endian=big ;; sparclite*) cpu_type=sparc arch=sparclite ;; sparclet*) cpu_type=sparc arch=sparclet ;; sparc64*) cpu_type=sparc arch=v9-64 ;; @@ -2277,6 +2290,7 @@ for this_target in $target $canon_targets ; do dev=no bfd_gas=no em=generic + mips_stabs_elf= # assign object format case ${generic_target} in @@ -2305,7 +2319,8 @@ for this_target in $target $canon_targets ; do arm-*-linux*aout*) fmt=aout em=linux ;; arm*-*-linux-gnu* | arm*-*-uclinux*) fmt=elf em=linux ;; - arm-*-netbsd*) fmt=aout em=nbsd ;; + arm-*-netbsdelf*) fmt=elf em=nbsd ;; + arm-*-netbsd* | arm-*-openbsd*) fmt=aout em=nbsd ;; arm-*-oabi | thumb-*-oabi) fmt=elf ;; arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;; arm-*-wince) fmt=coff em=wince-pe ;; @@ -2346,6 +2361,7 @@ for this_target in $target $canon_targets ; do h8300-*-rtems*) fmt=coff ;; h8300-*-coff) fmt=coff ;; + h8300-*-elf) fmt=elf ;; h8500-*-rtems*) fmt=coff ;; h8500-*-coff) fmt=coff ;; @@ -2356,8 +2372,16 @@ for this_target in $target $canon_targets ; do i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; - i386-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes;; - i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; + i386-*-netbsd*) em=nbsd bfd_gas=yes + case ${cpu} in + x86_64) fmt=elf ;; + *) case ${os} in + *elf*) fmt=elf ;; + *) fmt=aout ;; + esac + ;; + esac + ;; i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-linux*aout* | i386-*-linux*oldld) fmt=aout em=linux ;; i386-*-linux*coff*) fmt=coff em=linux ;; @@ -2416,8 +2440,10 @@ EOF i960-*-elf*) fmt=elf ;; ia64-*-elf*) fmt=elf ;; + ia64-*-aix*) fmt=elf em=ia64aix ;; ia64-*-linux-gnu*) fmt=elf em=linux ;; ia64-*-hpux*) fmt=elf em=hpux ;; + ia64-*-netbsd*) fmt=elf em=nbsd ;; m32r-*-*) fmt=elf bfd_gas=yes ;; @@ -2439,7 +2465,9 @@ EOF m68k-*-linux-gnu*) fmt=elf em=linux ;; m68k-*-gnu*) fmt=elf ;; m68k-*-lynxos*) fmt=coff em=lynx ;; - m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + m68k-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes ;; + m68k-*-netbsdaout* | m68k-*-netbsd*) + fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-apple-aux*) fmt=coff em=aux ;; m68k-*-psos*) fmt=elf em=psos;; @@ -2451,7 +2479,6 @@ EOF mcore-*-pe) fmt=coff em=pe bfd_gas=yes ;; # don't change em like *-*-bsd does - mips-dec-netbsd*) fmt=elf endian=little ;; mips-dec-openbsd*) fmt=elf endian=little ;; mips-dec-bsd*) fmt=aout endian=little ;; mips-sony-bsd*) fmt=ecoff ;; @@ -2465,26 +2492,17 @@ EOF mips-*-irix*) fmt=ecoff ;; mips-*-lnews*) fmt=ecoff em=lnews ;; mips-*-riscos*) fmt=ecoff ;; - mips-*-linux-gnu*) - fmt=elf em=tmips - cat >> confdefs.h <<\EOF -#define MIPS_STABS_ELF 1 -EOF - - ;; + mips*-*-linux*) fmt=elf em=tmips mips_stabs_elf=y ;; mips-*-sysv4*MP* | mips-*-gnu*) fmt=elf em=tmips ;; mips-*-sysv*) fmt=ecoff ;; - mips-*-elf* | mips-*-rtems* | mips-*-openbsd*) + mips-*-elf* | mips-*-rtems* | mips-*-netbsd* | mips-*-openbsd*) fmt=elf ;; - mips-*-vxworks*) fmt=elf - cat >> confdefs.h <<\EOF -#define MIPS_STABS_ELF 1 -EOF - - ;; + mips-*-vxworks*) fmt=elf mips_stabs_elf=y ;; + mmix-*-*) fmt=elf bfd_gas=yes ;; mn10200-*-*) fmt=elf bfd_gas=yes ;; mn10300-*-*) fmt=elf bfd_gas=yes ;; + openrisc-*-*) fmt=elf bfd_gas=yes ;; pj*) fmt=elf ;; ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*) fmt=coff em=pe ;; @@ -2515,10 +2533,20 @@ EOF ppc-*-netware*) fmt=elf em=ppcnw ;; ppc-*-vxworks*) fmt=elf ;; - sh-*-linux*) fmt=elf em=linux ;; + s390x-*-linux-gnu*) fmt=elf em=linux ;; + s390-*-linux-gnu*) fmt=elf em=linux ;; + + sh*-*-linux*) fmt=elf em=linux + case ${cpu} in + sh*eb) + endian=big ;; + sh*) + endian=little ;; + esac ;; + sh*-*-netbsdelf*) fmt=elf em=nbsd ;; sh-*-elf*) fmt=elf ;; sh-*-coff*) fmt=coff bfd_gas=yes;; - sh-*-pe*) fmt=coff em=pe bfd_gas=yes;; + sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;; sh-*-rtemself*) fmt=elf ;; sh-*-rtems*) fmt=coff bfd_gas=yes;; @@ -2569,12 +2597,13 @@ EOF fmt=aout ;; vax-*-vms) fmt=vms ;; + w65-*-*) fmt=coff ;; + + xstormy16-*-*) fmt=elf bfd_gas=yes ;; z8k-*-coff | z8k-*-sim) fmt=coff ;; - w65-*-*) fmt=coff ;; - *-*-aout | *-*-scout) fmt=aout ;; *-*-freebsd*) fmt=elf em=freebsd bfd_gas=yes ;; @@ -2607,6 +2636,13 @@ EOF fi fi + if test x${mips_stabs_elf} != x; then + cat >> confdefs.h <<\EOF +#define MIPS_STABS_ELF 1 +EOF + + fi + case ${cpu_type}-${fmt} in alpha*-*) bfd_gas=yes ;; arm-*) bfd_gas=yes ;; @@ -2615,6 +2651,7 @@ EOF ia64*-*) bfd_gas=yes ;; mips-*) bfd_gas=yes ;; ns32k-*) bfd_gas=yes ;; + pdp11-*) bfd_gas=yes ;; ppc-*) bfd_gas=yes ;; sparc-*) bfd_gas=yes ;; strongarm-*) bfd_gas=yes ;; @@ -2653,7 +2690,7 @@ EOF # Any other special object files needed ? case ${cpu_type} in - fr30 | m32r) + fr30 | m32r | openrisc) using_cgen=yes ;; @@ -2681,7 +2718,7 @@ EOF fi ;; - i386) + i386 | s390 | sparc) if test $this_target = $target ; then cat >> confdefs.h <<EOF #define DEFAULT_ARCH "${arch}" @@ -2689,14 +2726,11 @@ EOF fi ;; - sparc) - if test $this_target = $target ; then - cat >> confdefs.h <<EOF -#define DEFAULT_ARCH "${arch}" -EOF - fi + xstormy16) + using_cgen=yes ;; + *) ;; esac @@ -2728,9 +2762,9 @@ EOF case ${generic_target}-${fmt} in mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; - mips-*-linux-gnu*-*) case "$endian" in - big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; - *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;; + mips*-*-linux*-*) case "$endian" in + big) emulation="mipsbelf mipslelf mipself" ;; + *) emulation="mipslelf mipsbelf mipself" ;; esac ;; mips-*-lnews*-ecoff) ;; mips-*-*-ecoff) case "$endian" in @@ -2785,6 +2819,7 @@ fi # is emulated. case ${target_cpu} in vax | tahoe ) atof=${target_cpu} ;; + pdp11) atof=vax ;; *) atof=ieee ;; esac @@ -3073,7 +3108,7 @@ EOF # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3077: checking for $ac_word" >&5 +echo "configure:3112: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3103,7 +3138,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3107: checking for $ac_word" >&5 +echo "configure:3142: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3154,7 +3189,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3158: checking for $ac_word" >&5 +echo "configure:3193: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3186,7 +3221,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:3190: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:3225: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -3197,12 +3232,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 3201 "configure" +#line 3236 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:3206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -3228,12 +3263,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:3232: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:3267: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:3237: checking whether we are using GNU C" >&5 +echo "configure:3272: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3242,7 +3277,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -3261,7 +3296,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:3265: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:3300: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3298,7 +3333,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3302: checking for $ac_word" >&5 +echo "configure:3337: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3329,7 +3364,7 @@ done test -n "$YACC" || YACC="yacc" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:3333: checking how to run the C preprocessor" >&5 +echo "configure:3368: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3344,13 +3379,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -#line 3348 "configure" +#line 3383 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3354: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3361,13 +3396,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 3365 "configure" +#line 3400 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3378,13 +3413,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext <<EOF -#line 3382 "configure" +#line 3417 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3388: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3423: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3414,7 +3449,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3418: checking for $ac_word" >&5 +echo "configure:3453: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3447,7 +3482,7 @@ test -n "$LEX" || LEX=""$missing_dir/missing flex"" # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3451: checking for $ac_word" >&5 +echo "configure:3486: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3481,7 +3516,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:3485: checking for yywrap in -l$ac_lib" >&5 +echo "configure:3520: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3489,7 +3524,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <<EOF -#line 3493 "configure" +#line 3528 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3500,7 +3535,7 @@ int main() { yywrap() ; return 0; } EOF -if { (eval echo configure:3504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3523,7 +3558,7 @@ fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:3527: checking lex output file root" >&5 +echo "configure:3562: checking lex output file root" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3544,7 +3579,7 @@ echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:3548: checking whether yytext is a pointer" >&5 +echo "configure:3583: checking whether yytext is a pointer" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3556,14 +3591,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c ac_save_LIBS="$LIBS" LIBS="$LIBS $LEXLIB" cat > conftest.$ac_ext <<EOF -#line 3560 "configure" +#line 3595 "configure" #include "confdefs.h" `cat $LEX_OUTPUT_ROOT.c` int main() { ; return 0; } EOF -if { (eval echo configure:3567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_prog_lex_yytext_pointer=yes else @@ -3585,11 +3620,11 @@ EOF fi -ALL_LINGUAS= +ALL_LINGUAS="fr tr" # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3593: checking for $ac_word" >&5 +echo "configure:3628: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3617,12 +3652,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3621: checking for ANSI C header files" >&5 +echo "configure:3656: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3626 "configure" +#line 3661 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -3630,7 +3665,7 @@ else #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3634: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3669: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3647,7 +3682,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext <<EOF -#line 3651 "configure" +#line 3686 "configure" #include "confdefs.h" #include <string.h> EOF @@ -3665,7 +3700,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext <<EOF -#line 3669 "configure" +#line 3704 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -3686,7 +3721,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext <<EOF -#line 3690 "configure" +#line 3725 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3697,7 +3732,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:3701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3721,12 +3756,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3725: checking for working const" >&5 +echo "configure:3760: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3730 "configure" +#line 3765 "configure" #include "confdefs.h" int main() { @@ -3775,7 +3810,7 @@ ccp = (char const *const *) p; ; return 0; } EOF -if { (eval echo configure:3779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3796,21 +3831,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:3800: checking for inline" >&5 +echo "configure:3835: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <<EOF -#line 3807 "configure" +#line 3842 "configure" #include "confdefs.h" int main() { } $ac_kw foo() { ; return 0; } EOF -if { (eval echo configure:3814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3849: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -3836,12 +3871,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3840: checking for off_t" >&5 +echo "configure:3875: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3845 "configure" +#line 3880 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3869,12 +3904,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3873: checking for size_t" >&5 +echo "configure:3908: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3878 "configure" +#line 3913 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3904,19 +3939,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:3908: checking for working alloca.h" >&5 +echo "configure:3943: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3913 "configure" +#line 3948 "configure" #include "confdefs.h" #include <alloca.h> int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:3920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -3937,12 +3972,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3941: checking for alloca" >&5 +echo "configure:3976: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3946 "configure" +#line 3981 "configure" #include "confdefs.h" #ifdef __GNUC__ @@ -3970,7 +4005,7 @@ int main() { char *p = (char *) alloca(1); ; return 0; } EOF -if { (eval echo configure:3974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -4002,12 +4037,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:4006: checking whether alloca needs Cray hooks" >&5 +echo "configure:4041: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4011 "configure" +#line 4046 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -4032,12 +4067,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4036: checking for $ac_func" >&5 +echo "configure:4071: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4041 "configure" +#line 4076 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4060,7 +4095,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:4064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4087,7 +4122,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:4091: checking stack direction for C alloca" >&5 +echo "configure:4126: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4095,7 +4130,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <<EOF -#line 4099 "configure" +#line 4134 "configure" #include "confdefs.h" find_stack_direction () { @@ -4114,7 +4149,7 @@ main () exit (find_stack_direction() < 0); } EOF -if { (eval echo configure:4118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -4139,17 +4174,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4143: checking for $ac_hdr" >&5 +echo "configure:4178: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4148 "configure" +#line 4183 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4153: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4178,12 +4213,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4182: checking for $ac_func" >&5 +echo "configure:4217: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4187 "configure" +#line 4222 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4206,7 +4241,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:4210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4231,7 +4266,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:4235: checking for working mmap" >&5 +echo "configure:4270: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4239,7 +4274,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <<EOF -#line 4243 "configure" +#line 4278 "configure" #include "confdefs.h" /* Thanks to Mike Haertel and Jim Avera for this test. @@ -4379,7 +4414,7 @@ main() } EOF -if { (eval echo configure:4383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -4407,17 +4442,17 @@ unistd.h values.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4411: checking for $ac_hdr" >&5 +echo "configure:4446: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4416 "configure" +#line 4451 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4456: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4447,12 +4482,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4451: checking for $ac_func" >&5 +echo "configure:4486: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4456 "configure" +#line 4491 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4475,7 +4510,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:4479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4504,12 +4539,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4508: checking for $ac_func" >&5 +echo "configure:4543: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4513 "configure" +#line 4548 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4532,7 +4567,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:4536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4566,19 +4601,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:4570: checking for LC_MESSAGES" >&5 +echo "configure:4605: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4575 "configure" +#line 4610 "configure" #include "confdefs.h" #include <locale.h> int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:4582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -4599,7 +4634,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:4603: checking whether NLS is requested" >&5 +echo "configure:4638: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -4619,7 +4654,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:4623: checking whether included gettext is requested" >&5 +echo "configure:4658: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -4638,17 +4673,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:4642: checking for libintl.h" >&5 +echo "configure:4677: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4647 "configure" +#line 4682 "configure" #include "confdefs.h" #include <libintl.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4652: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4687: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4665,19 +4700,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:4669: checking for gettext in libc" >&5 +echo "configure:4704: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4674 "configure" +#line 4709 "configure" #include "confdefs.h" #include <libintl.h> int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:4681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -4693,7 +4728,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:4697: checking for bindtextdomain in -lintl" >&5 +echo "configure:4732: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4701,7 +4736,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <<EOF -#line 4705 "configure" +#line 4740 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4712,7 +4747,7 @@ int main() { bindtextdomain() ; return 0; } EOF -if { (eval echo configure:4716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4728,19 +4763,19 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:4732: checking for gettext in libintl" >&5 +echo "configure:4767: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4737 "configure" +#line 4772 "configure" #include "confdefs.h" int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:4744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libintl=yes else @@ -4768,7 +4803,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4772: checking for $ac_word" >&5 +echo "configure:4807: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4802,12 +4837,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4806: checking for $ac_func" >&5 +echo "configure:4841: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4811 "configure" +#line 4846 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4830,7 +4865,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:4834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4857,7 +4892,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4861: checking for $ac_word" >&5 +echo "configure:4896: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4893,7 +4928,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4897: checking for $ac_word" >&5 +echo "configure:4932: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4925,7 +4960,7 @@ else fi cat > conftest.$ac_ext <<EOF -#line 4929 "configure" +#line 4964 "configure" #include "confdefs.h" int main() { @@ -4933,7 +4968,7 @@ extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } EOF -if { (eval echo configure:4937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -4965,7 +5000,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4969: checking for $ac_word" >&5 +echo "configure:5004: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4999,7 +5034,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5003: checking for $ac_word" >&5 +echo "configure:5038: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5035,7 +5070,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5039: checking for $ac_word" >&5 +echo "configure:5074: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5125,7 +5160,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:5129: checking for catalogs to be installed" >&5 +echo "configure:5164: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -5153,17 +5188,17 @@ echo "configure:5129: checking for catalogs to be installed" >&5 if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:5157: checking for linux/version.h" >&5 +echo "configure:5192: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5162 "configure" +#line 5197 "configure" #include "confdefs.h" #include <linux/version.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5167: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5202: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5208,7 +5243,7 @@ fi l= - if test -d $srcdir/po; then + if test -f $srcdir/po/POTFILES.in; then test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then @@ -5226,7 +5261,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:5230: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:5265: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" @@ -5251,7 +5286,7 @@ fi echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:5255: checking for executable suffix" >&5 +echo "configure:5290: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5261,10 +5296,10 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:5265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:5300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in - *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done @@ -5286,17 +5321,17 @@ for ac_hdr in string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h e do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5290: checking for $ac_hdr" >&5 +echo "configure:5325: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5295 "configure" +#line 5330 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5300: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5335: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5326,7 +5361,7 @@ done # Put this here so that autoconf's "cross-compiling" message doesn't confuse # people who are not cross-compiling but are compiling cross-assemblers. echo $ac_n "checking whether compiling a cross-assembler""... $ac_c" 1>&6 -echo "configure:5330: checking whether compiling a cross-assembler" >&5 +echo "configure:5365: checking whether compiling a cross-assembler" >&5 if test "${host}" = "${target}"; then cross_gas=no else @@ -5341,19 +5376,19 @@ echo "$ac_t""$cross_gas" 1>&6 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:5345: checking for working alloca.h" >&5 +echo "configure:5380: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5350 "configure" +#line 5385 "configure" #include "confdefs.h" #include <alloca.h> int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:5357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -5374,12 +5409,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:5378: checking for alloca" >&5 +echo "configure:5413: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5383 "configure" +#line 5418 "configure" #include "confdefs.h" #ifdef __GNUC__ @@ -5407,7 +5442,7 @@ int main() { char *p = (char *) alloca(1); ; return 0; } EOF -if { (eval echo configure:5411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -5439,12 +5474,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:5443: checking whether alloca needs Cray hooks" >&5 +echo "configure:5478: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5448 "configure" +#line 5483 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -5469,12 +5504,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5473: checking for $ac_func" >&5 +echo "configure:5508: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5478 "configure" +#line 5513 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5497,7 +5532,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5524,7 +5559,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:5528: checking stack direction for C alloca" >&5 +echo "configure:5563: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5532,7 +5567,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <<EOF -#line 5536 "configure" +#line 5571 "configure" #include "confdefs.h" find_stack_direction () { @@ -5551,7 +5586,7 @@ main () exit (find_stack_direction() < 0); } EOF -if { (eval echo configure:5555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -5573,21 +5608,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:5577: checking for inline" >&5 +echo "configure:5612: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <<EOF -#line 5584 "configure" +#line 5619 "configure" #include "confdefs.h" int main() { } $ac_kw foo() { ; return 0; } EOF -if { (eval echo configure:5591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -5617,12 +5652,12 @@ esac for ac_func in unlink remove do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5621: checking for $ac_func" >&5 +echo "configure:5656: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5626 "configure" +#line 5661 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5645,7 +5680,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5674,12 +5709,12 @@ done for ac_func in sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5678: checking for $ac_func" >&5 +echo "configure:5713: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5683 "configure" +#line 5718 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5702,7 +5737,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5731,13 +5766,13 @@ done case "${need_libm}" in yes) LIBM= -case "$host" in +case $host in *-*-beos* | *-*-cygwin* | *-*-pw32*) # These system don't have libm ;; *-ncr-sysv4.3*) echo $ac_n "checking for _mwvalidcheckl in -lmw""... $ac_c" 1>&6 -echo "configure:5741: checking for _mwvalidcheckl in -lmw" >&5 +echo "configure:5776: checking for _mwvalidcheckl in -lmw" >&5 ac_lib_var=`echo mw'_'_mwvalidcheckl | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5745,7 +5780,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lmw $LIBS" cat > conftest.$ac_ext <<EOF -#line 5749 "configure" +#line 5784 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -5756,7 +5791,7 @@ int main() { _mwvalidcheckl() ; return 0; } EOF -if { (eval echo configure:5760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5777,7 +5812,7 @@ else fi echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:5781: checking for main in -lm" >&5 +echo "configure:5816: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5785,14 +5820,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <<EOF -#line 5789 "configure" +#line 5824 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:5796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5815,7 +5850,7 @@ fi ;; *) echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:5819: checking for main in -lm" >&5 +echo "configure:5854: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5823,14 +5858,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <<EOF -#line 5827 "configure" +#line 5862 "configure" #include "confdefs.h" int main() { main() ; return 0; } EOF -if { (eval echo configure:5834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5861,12 +5896,12 @@ esac # enough, but on some of those systems, the assert macro relies on requoting # working properly! echo $ac_n "checking for working assert macro""... $ac_c" 1>&6 -echo "configure:5865: checking for working assert macro" >&5 +echo "configure:5900: checking for working assert macro" >&5 if eval "test \"`echo '$''{'gas_cv_assert_ok'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5870 "configure" +#line 5905 "configure" #include "confdefs.h" #include <assert.h> #include <stdio.h> @@ -5882,7 +5917,7 @@ assert (a == b ; return 0; } EOF -if { (eval echo configure:5886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_assert_ok=yes else @@ -5923,12 +5958,12 @@ gas_test_headers=" " echo $ac_n "checking whether declaration is required for strstr""... $ac_c" 1>&6 -echo "configure:5927: checking whether declaration is required for strstr" >&5 +echo "configure:5962: checking whether declaration is required for strstr" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_strstr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5932 "configure" +#line 5967 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -5939,7 +5974,7 @@ x = (f) strstr; ; return 0; } EOF -if { (eval echo configure:5943: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_strstr=no else @@ -5960,12 +5995,12 @@ fi echo $ac_n "checking whether declaration is required for malloc""... $ac_c" 1>&6 -echo "configure:5964: checking whether declaration is required for malloc" >&5 +echo "configure:5999: checking whether declaration is required for malloc" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 5969 "configure" +#line 6004 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -5976,7 +6011,7 @@ x = (f) malloc; ; return 0; } EOF -if { (eval echo configure:5980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_malloc=no else @@ -5997,12 +6032,12 @@ fi echo $ac_n "checking whether declaration is required for free""... $ac_c" 1>&6 -echo "configure:6001: checking whether declaration is required for free" >&5 +echo "configure:6036: checking whether declaration is required for free" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6006 "configure" +#line 6041 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -6013,7 +6048,7 @@ x = (f) free; ; return 0; } EOF -if { (eval echo configure:6017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_free=no else @@ -6034,12 +6069,12 @@ fi echo $ac_n "checking whether declaration is required for sbrk""... $ac_c" 1>&6 -echo "configure:6038: checking whether declaration is required for sbrk" >&5 +echo "configure:6073: checking whether declaration is required for sbrk" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_sbrk'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6043 "configure" +#line 6078 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -6050,7 +6085,7 @@ x = (f) sbrk; ; return 0; } EOF -if { (eval echo configure:6054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_sbrk=no else @@ -6071,12 +6106,12 @@ fi echo $ac_n "checking whether declaration is required for environ""... $ac_c" 1>&6 -echo "configure:6075: checking whether declaration is required for environ" >&5 +echo "configure:6110: checking whether declaration is required for environ" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_environ'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6080 "configure" +#line 6115 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -6087,7 +6122,7 @@ x = (f) environ; ; return 0; } EOF -if { (eval echo configure:6091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_environ=no else @@ -6111,12 +6146,12 @@ fi # for it? echo $ac_n "checking whether declaration is required for errno""... $ac_c" 1>&6 -echo "configure:6115: checking whether declaration is required for errno" >&5 +echo "configure:6150: checking whether declaration is required for errno" >&5 if eval "test \"`echo '$''{'gas_cv_decl_needed_errno'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 6120 "configure" +#line 6155 "configure" #include "confdefs.h" #ifdef HAVE_ERRNO_H @@ -6131,7 +6166,7 @@ x = (f) errno; ; return 0; } EOF -if { (eval echo configure:6135: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_decl_needed_errno=no else diff --git a/contrib/binutils/gas/configure.in b/contrib/binutils/gas/configure.in index 4250cf2..0be9d21 100644 --- a/contrib/binutils/gas/configure.in +++ b/contrib/binutils/gas/configure.in @@ -44,7 +44,7 @@ esac])dnl using_cgen=no -build_warnings="-W -Wall" +build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" AC_ARG_ENABLE(build-warnings, [ --enable-build-warnings Enable build-time compiler warnings if gcc is used], [case "${enableval}" in @@ -139,9 +139,13 @@ changequote([,])dnl mips*) cpu_type=mips endian=big ;; pjl*) cpu_type=pj endian=little ;; pj*) cpu_type=pj endian=big ;; - powerpcle*) cpu_type=ppc endian=little ;; + powerpc*le*) cpu_type=ppc endian=little ;; powerpc*) cpu_type=ppc endian=big ;; rs6000*) cpu_type=ppc ;; + s390x*) cpu_type=s390 arch=s390x ;; + s390*) cpu_type=s390 arch=s390 ;; + sh*le) cpu_type=sh endian=little ;; + sh*) cpu_type=sh endian=big ;; sparclite*) cpu_type=sparc arch=sparclite ;; sparclet*) cpu_type=sparc arch=sparclet ;; sparc64*) cpu_type=sparc arch=v9-64 ;; @@ -161,6 +165,7 @@ changequote([,])dnl dev=no bfd_gas=no em=generic + mips_stabs_elf= # assign object format case ${generic_target} in @@ -189,7 +194,8 @@ changequote([,])dnl arm-*-linux*aout*) fmt=aout em=linux ;; arm*-*-linux-gnu* | arm*-*-uclinux*) fmt=elf em=linux ;; - arm-*-netbsd*) fmt=aout em=nbsd ;; + arm-*-netbsdelf*) fmt=elf em=nbsd ;; + arm-*-netbsd* | arm-*-openbsd*) fmt=aout em=nbsd ;; arm-*-oabi | thumb-*-oabi) fmt=elf ;; arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;; arm-*-wince) fmt=coff em=wince-pe ;; @@ -230,6 +236,7 @@ changequote([,])dnl h8300-*-rtems*) fmt=coff ;; h8300-*-coff) fmt=coff ;; + h8300-*-elf) fmt=elf ;; h8500-*-rtems*) fmt=coff ;; h8500-*-coff) fmt=coff ;; @@ -240,8 +247,16 @@ changequote([,])dnl i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; - i386-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes;; - i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; + i386-*-netbsd*) em=nbsd bfd_gas=yes + case ${cpu} in + x86_64) fmt=elf ;; + *) case ${os} in + *elf*) fmt=elf ;; + *) fmt=aout ;; + esac + ;; + esac + ;; i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-linux*aout* | i386-*-linux*oldld) fmt=aout em=linux ;; i386-*-linux*coff*) fmt=coff em=linux ;; @@ -297,8 +312,10 @@ changequote([,])dnl i960-*-elf*) fmt=elf ;; ia64-*-elf*) fmt=elf ;; + ia64-*-aix*) fmt=elf em=ia64aix ;; ia64-*-linux-gnu*) fmt=elf em=linux ;; ia64-*-hpux*) fmt=elf em=hpux ;; + ia64-*-netbsd*) fmt=elf em=nbsd ;; m32r-*-*) fmt=elf bfd_gas=yes ;; @@ -320,7 +337,9 @@ changequote([,])dnl m68k-*-linux-gnu*) fmt=elf em=linux ;; m68k-*-gnu*) fmt=elf ;; m68k-*-lynxos*) fmt=coff em=lynx ;; - m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + m68k-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes ;; + m68k-*-netbsdaout* | m68k-*-netbsd*) + fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-apple-aux*) fmt=coff em=aux ;; m68k-*-psos*) fmt=elf em=psos;; @@ -332,7 +351,6 @@ changequote([,])dnl mcore-*-pe) fmt=coff em=pe bfd_gas=yes ;; # don't change em like *-*-bsd does - mips-dec-netbsd*) fmt=elf endian=little ;; mips-dec-openbsd*) fmt=elf endian=little ;; mips-dec-bsd*) fmt=aout endian=little ;; mips-sony-bsd*) fmt=ecoff ;; @@ -346,22 +364,17 @@ changequote([,])dnl mips-*-irix*) fmt=ecoff ;; mips-*-lnews*) fmt=ecoff em=lnews ;; mips-*-riscos*) fmt=ecoff ;; - mips-*-linux-gnu*) - fmt=elf em=tmips - AC_DEFINE(MIPS_STABS_ELF, 1, - [Use ELF stabs for MIPS, not ECOFF stabs]) - ;; + mips*-*-linux*) fmt=elf em=tmips mips_stabs_elf=y ;; mips-*-sysv4*MP* | mips-*-gnu*) fmt=elf em=tmips ;; mips-*-sysv*) fmt=ecoff ;; - mips-*-elf* | mips-*-rtems* | mips-*-openbsd*) + mips-*-elf* | mips-*-rtems* | mips-*-netbsd* | mips-*-openbsd*) fmt=elf ;; - mips-*-vxworks*) fmt=elf - AC_DEFINE(MIPS_STABS_ELF, 1, - [Use ELF stabs for MIPS, not ECOFF stabs]) - ;; + mips-*-vxworks*) fmt=elf mips_stabs_elf=y ;; + mmix-*-*) fmt=elf bfd_gas=yes ;; mn10200-*-*) fmt=elf bfd_gas=yes ;; mn10300-*-*) fmt=elf bfd_gas=yes ;; + openrisc-*-*) fmt=elf bfd_gas=yes ;; pj*) fmt=elf ;; ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*) fmt=coff em=pe ;; @@ -390,10 +403,20 @@ changequote([,])dnl ppc-*-netware*) fmt=elf em=ppcnw ;; ppc-*-vxworks*) fmt=elf ;; - sh-*-linux*) fmt=elf em=linux ;; + s390x-*-linux-gnu*) fmt=elf em=linux ;; + s390-*-linux-gnu*) fmt=elf em=linux ;; + + sh*-*-linux*) fmt=elf em=linux + case ${cpu} in + sh*eb) + endian=big ;; + sh*) + endian=little ;; + esac ;; + sh*-*-netbsdelf*) fmt=elf em=nbsd ;; sh-*-elf*) fmt=elf ;; sh-*-coff*) fmt=coff bfd_gas=yes;; - sh-*-pe*) fmt=coff em=pe bfd_gas=yes;; + sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;; sh-*-rtemself*) fmt=elf ;; sh-*-rtems*) fmt=coff bfd_gas=yes;; @@ -444,12 +467,13 @@ changequote([,])dnl fmt=aout ;; vax-*-vms) fmt=vms ;; + w65-*-*) fmt=coff ;; + + xstormy16-*-*) fmt=elf bfd_gas=yes ;; z8k-*-coff | z8k-*-sim) fmt=coff ;; - w65-*-*) fmt=coff ;; - *-*-aout | *-*-scout) fmt=aout ;; *-*-freebsd*) fmt=elf em=freebsd bfd_gas=yes ;; @@ -480,6 +504,11 @@ changequote([,])dnl fi fi + if test x${mips_stabs_elf} != x; then + AC_DEFINE(MIPS_STABS_ELF, 1, + [Use ELF stabs for MIPS, not ECOFF stabs]) + fi + case ${cpu_type}-${fmt} in alpha*-*) bfd_gas=yes ;; arm-*) bfd_gas=yes ;; @@ -488,6 +517,7 @@ changequote([,])dnl ia64*-*) bfd_gas=yes ;; mips-*) bfd_gas=yes ;; ns32k-*) bfd_gas=yes ;; + pdp11-*) bfd_gas=yes ;; ppc-*) bfd_gas=yes ;; sparc-*) bfd_gas=yes ;; strongarm-*) bfd_gas=yes ;; @@ -526,7 +556,7 @@ changequote([,])dnl # Any other special object files needed ? case ${cpu_type} in - fr30 | m32r) + fr30 | m32r | openrisc) using_cgen=yes ;; @@ -554,16 +584,16 @@ changequote([,])dnl fi ;; - i386) + i386 | s390 | sparc) if test $this_target = $target ; then AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.]) fi ;; - sparc) - if test $this_target = $target ; then - AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.]) - fi + + xstormy16) + using_cgen=yes ;; + *) ;; esac @@ -595,9 +625,9 @@ changequote([,])dnl case ${generic_target}-${fmt} in mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; - mips-*-linux-gnu*-*) case "$endian" in - big) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; - *) emulation="mipslelf mipsbelf mipself mipslecoff mipsbecoff mipsecoff" ;; + mips*-*-linux*-*) case "$endian" in + big) emulation="mipsbelf mipslelf mipself" ;; + *) emulation="mipslelf mipsbelf mipself" ;; esac ;; mips-*-lnews*-ecoff) ;; mips-*-*-ecoff) case "$endian" in @@ -652,6 +682,7 @@ fi # is emulated. case ${target_cpu} in vax | tahoe ) atof=${target_cpu} ;; + pdp11) atof=vax ;; *) atof=ieee ;; esac @@ -839,7 +870,7 @@ AC_PROG_CC AC_PROG_YACC AM_PROG_LEX -ALL_LINGUAS= +ALL_LINGUAS="fr tr" CY_GNU_GETTEXT AM_MAINTAINER_MODE diff --git a/contrib/binutils/gas/depend.c b/contrib/binutils/gas/depend.c index c6538dd..3c6049d 100644 --- a/contrib/binutils/gas/depend.c +++ b/contrib/binutils/gas/depend.c @@ -1,5 +1,5 @@ /* depend.c - Handle dependency tracking. - Copyright 1997, 1998, 2000 Free Software Foundation, Inc. + Copyright 1997, 1998, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -21,15 +21,16 @@ #include "as.h" /* The file to write to, or NULL if no dependencies being kept. */ -static char *dep_file = NULL; +static char * dep_file = NULL; -struct dependency { - char *file; - struct dependency *next; -}; +struct dependency + { + char * file; + struct dependency * next; + }; /* All the files we depend on. */ -static struct dependency *dep_chain = NULL; +static struct dependency * dep_chain = NULL; /* Current column in output file. */ static int column = 0; @@ -86,9 +87,11 @@ quote_string_for_make (file, src) { char *p = src; int i = 0; + for (;;) { char c = *p++; + switch (c) { case '\0': @@ -102,6 +105,7 @@ quote_string_for_make (file, src) the end of a file name; and backslashes in other contexts should not be doubled. */ char *q; + for (q = p - 1; src < q && q[-1] == '\\'; q--) { if (file) @@ -190,10 +194,10 @@ print_dependencies () if (dep_file == NULL) return; - f = fopen (dep_file, "w"); + f = fopen (dep_file, FOPEN_WT); if (f == NULL) { - as_warn (_("Can't open `%s' for writing"), dep_file); + as_warn (_("can't open `%s' for writing"), dep_file); return; } @@ -205,5 +209,5 @@ print_dependencies () putc ('\n', f); if (fclose (f)) - as_warn (_("Can't close `%s'"), dep_file); + as_warn (_("can't close `%s'"), dep_file); } diff --git a/contrib/binutils/gas/doc/Makefile.am b/contrib/binutils/gas/doc/Makefile.am index 60761a4..566038c 100644 --- a/contrib/binutils/gas/doc/Makefile.am +++ b/contrib/binutils/gas/doc/Makefile.am @@ -5,6 +5,14 @@ AUTOMAKE_OPTIONS = cygnus # What version of the manual you want; "all" includes everything CONFIG=all +# Options to extract the man page from as.texinfo +MANCONF = -Dman + +TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl + +POD2MAN = pod2man --center="GNU Development Tools" \ + --release="binutils-$(VERSION)" --section=1 + man_MANS = as.1 info_TEXINFOS = as.texinfo gasp.texi @@ -30,9 +38,13 @@ CPU_DOCS = \ c-m32r.texi \ c-m68hc11.texi \ c-m68k.texi \ + c-m88k.texi \ c-mips.texi \ + c-mmix.texi \ c-ns32k.texi \ + c-pdp11.texi \ c-pj.texi \ + c-ppc.texi \ c-sh.texi \ c-sparc.texi \ c-tic54x.texi \ @@ -54,3 +66,20 @@ noinst_TEXINFOS = internals.texi DISTCLEANFILES = asconfig.texi MAINTAINERCLEANFILES = gasver.texi + +# Maintenance + +# We need it for the taz target in ../../Makefile.in. +info: $(MANS) + +# Build the man page from the texinfo file +# The sed command removes the no-adjust Nroff command so that +# the man output looks standard. +as.1: $(srcdir)/as.texinfo + touch $@ + -$(TEXI2POD) $(MANCONF) < $(srcdir)/as.texinfo > as.pod + -($(POD2MAN) as.pod | \ + sed -e '/^.if n .na/d' > $@.T$$$$ && \ + mv -f $@.T$$$$ $@) || \ + (rm -f $@.T$$$$ && exit 1) + rm -f as.pod diff --git a/contrib/binutils/gas/doc/Makefile.in b/contrib/binutils/gas/doc/Makefile.in index 1f48577..147c5e7 100644 --- a/contrib/binutils/gas/doc/Makefile.in +++ b/contrib/binutils/gas/doc/Makefile.in @@ -121,6 +121,15 @@ AUTOMAKE_OPTIONS = cygnus # What version of the manual you want; "all" includes everything CONFIG = all +# Options to extract the man page from as.texinfo +MANCONF = -Dman + +TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl + +POD2MAN = pod2man --center="GNU Development Tools" \ + --release="binutils-$(VERSION)" --section=1 + + man_MANS = as.1 info_TEXINFOS = as.texinfo gasp.texi @@ -140,9 +149,13 @@ CPU_DOCS = \ c-m32r.texi \ c-m68hc11.texi \ c-m68k.texi \ + c-m88k.texi \ c-mips.texi \ + c-mmix.texi \ c-ns32k.texi \ + c-pdp11.texi \ c-pj.texi \ + c-ppc.texi \ c-sh.texi \ c-sparc.texi \ c-tic54x.texi \ @@ -447,6 +460,23 @@ gasver.texi: Makefile as.info: $(srcdir)/as.texinfo asconfig.texi gasver.texi $(CPU_DOCS) as.dvi: $(srcdir)/as.texinfo asconfig.texi gasver.texi $(CPU_DOCS) +# Maintenance + +# We need it for the taz target in ../../Makefile.in. +info: $(MANS) + +# Build the man page from the texinfo file +# The sed command removes the no-adjust Nroff command so that +# the man output looks standard. +as.1: $(srcdir)/as.texinfo + touch $@ + -$(TEXI2POD) $(MANCONF) < $(srcdir)/as.texinfo > as.pod + -($(POD2MAN) as.pod | \ + sed -e '/^.if n .na/d' > $@.T$$$$ && \ + mv -f $@.T$$$$ $@) || \ + (rm -f $@.T$$$$ && exit 1) + rm -f as.pod + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/contrib/binutils/gas/doc/all.texi b/contrib/binutils/gas/doc/all.texi index 719c80a..9253203 100644 --- a/contrib/binutils/gas/doc/all.texi +++ b/contrib/binutils/gas/doc/all.texi @@ -41,9 +41,13 @@ @set M32R @set M68HC11 @set M680X0 +@set M880X0 @set MCORE @set MIPS +@set MMIX +@set PDP11 @set PJ +@set PPC @set SH @set SPARC @set C54X diff --git a/contrib/binutils/gas/doc/as.texinfo b/contrib/binutils/gas/doc/as.texinfo index 01b3c50..3d7fef5 100644 --- a/contrib/binutils/gas/doc/as.texinfo +++ b/contrib/binutils/gas/doc/as.texinfo @@ -13,12 +13,50 @@ @c %**start of header @setfilename as.info @c ---config--- +@macro gcctabopt{body} +@code{\body\} +@end macro @c defaults, config file may override: @set have-stabs @c --- @include asconfig.texi @include gasver.texi @c --- +@c man begin NAME +@ifset man +@c Configure for the generation of man pages +@set AS as +@set TARGET TARGET +@set GENERIC +@set A29K +@set ARC +@set ARM +@set D10V +@set D30V +@set H8/300 +@set H8/500 +@set HPPA +@set I370 +@set I80386 +@set I860 +@set I960 +@set M32R +@set M68HC11 +@set M680X0 +@set M880X0 +@set MCORE +@set MIPS +@set MMIX +@set PDP11 +@set PJ +@set PPC +@set SH +@set SPARC +@set C54X +@set V850 +@set VAX +@end ifset +@c man end @c common OR combinations of conditions @ifset AOUT @set aout-bout @@ -88,14 +126,17 @@ END-INFO-DIR-ENTRY @ifinfo This file documents the GNU Assembler "@value{AS}". +@c man begin COPYRIGHT Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with no Invariant Sections, with no Front-Cover Texts, and with no - Back-Cover Texts. A copy of the license is included in the - section entitled "GNU Free Documentation License". +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no Front-Cover Texts, and with no +Back-Cover Texts. A copy of the license is included in the +section entitled "GNU Free Documentation License". + +@c man end @ignore Permission is granted to process this file through Tex and print the @@ -118,7 +159,7 @@ notice identical to this one except for the removal of this paragraph @sp 13 The Free Software Foundation Inc. thanks The Nice Computer Company of Australia for loaning Dean Elsner to write the -first (Vax) version of @code{as} for Project @sc{gnu}. +first (Vax) version of @command{as} for Project @sc{gnu}. The proprietors, management and staff of TNCCA thank FSF for distracting the boss while they got some work done. @@ -154,10 +195,10 @@ Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Sof @node Top @top Using @value{AS} -This file is a user guide to the @sc{gnu} assembler @code{@value{AS}} version +This file is a user guide to the @sc{gnu} assembler @command{@value{AS}} version @value{VERSION}. @ifclear GENERIC -This version of the file describes @code{@value{AS}} configured to generate +This version of the file describes @command{@value{AS}} configured to generate code for @value{TARGET} architectures. @end ifclear @@ -184,9 +225,9 @@ section entitled "GNU Free Documentation License". @node Overview @chapter Overview @iftex -This manual is a user guide to the @sc{gnu} assembler @code{@value{AS}}. +This manual is a user guide to the @sc{gnu} assembler @command{@value{AS}}. @ifclear GENERIC -This version of the manual describes @code{@value{AS}} configured to generate +This version of the manual describes @command{@value{AS}} configured to generate code for @value{TARGET} architectures. @end ifclear @end iftex @@ -194,45 +235,64 @@ code for @value{TARGET} architectures. @cindex invocation summary @cindex option summary @cindex summary of options -Here is a brief summary of how to invoke @code{@value{AS}}. For details, +Here is a brief summary of how to invoke @command{@value{AS}}. For details, @pxref{Invoking,,Comand-Line Options}. +@c man title AS the portable GNU assembler. + +@ignore +@c man begin SEEALSO +gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}. +@c man end +@end ignore + @c We don't use deffn and friends for the following because they seem @c to be limited to one line for the header. @smallexample -@value{AS} [ -a[cdhlns][=file] ] [ -D ] [ --defsym @var{sym}=@var{val} ] - [ -f ] [ --gstabs ] [ --gdwarf2 ] [ --help ] [ -I @var{dir} ] [ -J ] [ -K ] [ -L ] - [ --keep-locals ] [ -o @var{objfile} ] [ -R ] [ --statistics ] [ -v ] - [ -version ] [ --version ] [ -W ] [ --warn ] [ --fatal-warnings ] - [ -w ] [ -x ] [ -Z ] [ --target-help ] +@c man begin SYNOPSIS +@value{AS} [@b{-a}[@b{cdhlns}][=@var{file}]] [@b{-D}] [@b{--defsym} @var{sym}=@var{val}] + [@b{-f}] [@b{--gstabs}] [@b{--gdwarf2}] [@b{--help}] [@b{-I} @var{dir}] + [@b{-J}] [@b{-K}] [@b{-L}] + [@b{--listing-lhs-width}=@var{NUM}] [@b{--listing-lhs-width2}=@var{NUM}] + [@b{--listing-rhs-width}=@var{NUM}] [@b{--listing-cont-lines}=@var{NUM}] + [@b{--keep-locals}] [@b{-o} @var{objfile}] [@b{-R}] [@b{--statistics}] [@b{-v}] + [@b{-version}] [@b{--version}] [@b{-W}] [@b{--warn}] [@b{--fatal-warnings}] + [@b{-w}] [@b{-x}] [@b{-Z}] [@b{--target-help}] [@var{target-options}] + [@b{--}|@var{files} @dots{}] +@c +@c Target dependent options are listed below. Keep the list sorted. +@c Add an empty line for separation. @ifset A29K @c am29k has no machine-dependent assembler options @end ifset @ifset ARC - [ -marc[5|6|7|8] ] - [ -EB | -EL ] + +@emph{Target ARC options:} + [@b{-marc[5|6|7|8]}] + [@b{-EB}|@b{-EL}] @end ifset @ifset ARM - [ -m[arm]1 | -m[arm]2 | -m[arm]250 | -m[arm]3 | -m[arm]6 | -m[arm]60 | - -m[arm]600 | -m[arm]610 | -m[arm]620 | -m[arm]7[t][[d]m[i]][fe] | -m[arm]70 | - -m[arm]700 | -m[arm]710[c] | -m[arm]7100 | -m[arm]7500 | -m[arm]8 | - -m[arm]810 | -m[arm]9 | -m[arm]920 | -m[arm]920t | -m[arm]9tdmi | - -mstrongarm | -mstrongarm110 | -mstrongarm1100 ] - [ -m[arm]v2 | -m[arm]v2a | -m[arm]v3 | -m[arm]v3m | -m[arm]v4 | -m[arm]v4t | - -m[arm]v5 | -[arm]v5t | -[arm]v5te ] - [ -mthumb | -mall ] - [ -mfpa10 | -mfpa11 | -mfpe-old | -mno-fpu ] - [ -EB | -EL ] - [ -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant ] - [ -mthumb-interwork ] - [ -moabi ] - [ -k ] + +@emph{Target ARM options:} +@c Don't document the deprecated options + [@b{-mcpu}=@var{processor}[+@var{extension}@dots{}]] + [@b{-march}=@var{architecture}[+@var{extension}@dots{}]] + [@b{-mfpu}=@var{floating-point-fromat}] + [@b{-mthumb}] + [@b{-EB}|@b{-EL}] + [@b{-mapcs-32}|@b{-mapcs-26}|@b{-mapcs-float}| + @b{-mapcs-reentrant}] + [@b{-mthumb-interwork}] [@b{-moabi}] [@b{-k}] @end ifset @ifset D10V - [ -O ] + +@emph{Target D10V options:} + [@b{-O}] @end ifset @ifset D30V - [ -O | -n | -N ] + +@emph{Target D30V options:} + [@b{-O}|@b{-n}|@b{-N}] @end ifset @ifset H8 @c Hitachi family chips have no machine-dependent assembler options @@ -240,58 +300,113 @@ Here is a brief summary of how to invoke @code{@value{AS}}. For details, @ifset HPPA @c HPPA has no machine-dependent assembler options (yet). @end ifset -@ifset PJ - [ -mb | -me ] -@end ifset -@ifset SPARC -@c The order here is important. See c-sparc.texi. - [ -Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite - -Av8plus | -Av8plusa | -Av9 | -Av9a ] - [ -xarch=v8plus | -xarch=v8plusa ] [ -bump ] [ -32 | -64 ] -@end ifset -@ifset TIC54X - [ -mcpu=54[123589] | -mcpu=54[56]lp ] [ -mfar-mode | -mf ] - [ -merrors-to-file <filename> | -me <filename> ] -@end ifset -@ifset Z8000 -@c Z8000 has no machine-dependent assembler options +@ifset I80386 + +@emph{Target i386 options:} + [@b{--32}|@b{--64}] @end ifset @ifset I960 + +@emph{Target i960 options:} @c see md_parse_option in tc-i960.c - [ -ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC ] - [ -b ] [ -no-relax ] + [@b{-ACA}|@b{-ACA_A}|@b{-ACB}|@b{-ACC}|@b{-AKA}|@b{-AKB}| + @b{-AKC}|@b{-AMC}] + [@b{-b}] [@b{-no-relax}] @end ifset @ifset M32R - [ --m32rx | --[no-]warn-explicit-parallel-conflicts | --W[n]p ] + +@emph{Target M32R options:} + [@b{--m32rx}|@b{--[no-]warn-explicit-parallel-conflicts}| + @b{--W[n]p}] @end ifset @ifset M680X0 - [ -l ] [ -m68000 | -m68010 | -m68020 | ... ] -@end ifset -@ifset MCORE - [ -jsri2bsr ] [ -sifilter ] [ -relax ] - [ -mcpu=[210|340] ] + +@emph{Target M680X0 options:} + [@b{-l}] [@b{-m68000}|@b{-m68010}|@b{-m68020}|@dots{}] @end ifset @ifset M68HC11 - [ -m68hc11 | -m68hc12 ] - [ --force-long-branchs ] [ --short-branchs ] [ --strict-direct-mode ] - [ --print-insn-syntax ] [ --print-opcodes ] [ --generate-example ] + +@emph{Target M68HC11 options:} + [@b{-m68hc11}|@b{-m68hc12}] + [@b{--force-long-branchs}] [@b{--short-branchs}] + [@b{--strict-direct-mode}] [@b{--print-insn-syntax}] + [@b{--print-opcodes}] [@b{--generate-example}] +@end ifset +@ifset MCORE + +@emph{Target MCORE options:} + [@b{-jsri2bsr}] [@b{-sifilter}] [@b{-relax}] + [@b{-mcpu=[210|340]}] @end ifset @ifset MIPS - [ -nocpp ] [ -EL ] [ -EB ] [ -G @var{num} ] [ -mcpu=@var{CPU} ] - [ -mips1 ] [ -mips2 ] [ -mips3 ] [ -mips4 ] [ -mips5 ] - [ -mips32 ] [ -mips64 ] - [ -m4650 ] [ -no-m4650 ] - [ --trap ] [ --break ] - [ --emulation=@var{name} ] -@end ifset - [ -- | @var{files} @dots{} ] + +@emph{Target MIPS options:} + [@b{-nocpp}] [@b{-EL}] [@b{-EB}] [@b{-G} @var{num}] [@b{-mcpu}=@var{CPU} ] + [@b{-mips1}] [@b{-mips2}] [@b{-mips3}] [@b{-mips4}] [@b{-mips5}] + [@b{-mips32}] [@b{-mips64}] + [@b{-m4650}] [@b{-no-m4650}] + [@b{--trap}] [@b{--break}] [@b{-n}] + [@b{--emulation}=@var{name} ] +@end ifset +@ifset MMIX + +@emph{Target MMIX options:} + [@b{--fixed-special-register-names}] [@b{--globalize-symbols}] + [@b{--gnu-syntax}] [@b{--relax}] [@b{--no-predefined-symbols}] + [@b{--no-expand}] [@b{--no-merge-gregs}] [@b{-x}] +@end ifset +@ifset PDP11 + +@emph{Target PDP11 options:} + [@b{-mpic}|@b{-mno-pic}] [@b{-mall}] [@b{-mno-extensions}] + [@b{-m}@var{extension}|@b{-mno-}@var{extension}] + [@b{-m}@var{cpu}] [@b{-m}@var{machine}] +@end ifset +@ifset PJ + +@emph{Target picoJava options:} + [@b{-mb}|@b{-me}] +@end ifset +@ifset PPC + +@emph{Target PowerPC options:} + [@b{-mpwrx}|@b{-mpwr2}|@b{-mpwr}|@b{-m601}|@b{-mppc}|@b{-mppc32}|@b{-m603}|@b{-m604}| + @b{-m403}|@b{-m405}|@b{-mppc64}|@b{-m620}|@b{-mppc64bridge}|@b{-mbooke}| + @b{-mbooke32}|@b{-mbooke64}] + [@b{-mcom}|@b{-many}|@b{-maltivec}] [@b{-memb}] + [@b{-mregnames}|@b{-mno-regnames}] + [@b{-mrelocatable}|@b{-mrelocatable-lib}] + [@b{-mlittle}|@b{-mlittle-endian}|@b{-mbig}|@b{-mbig-endian}] + [@b{-msolaris}|@b{-mno-solaris}] +@end ifset +@ifset SPARC + +@emph{Target SPARC options:} +@c The order here is important. See c-sparc.texi. + [@b{-Av6}|@b{-Av7}|@b{-Av8}|@b{-Asparclet}|@b{-Asparclite} + @b{-Av8plus}|@b{-Av8plusa}|@b{-Av9}|@b{-Av9a}] + [@b{-xarch=v8plus}|@b{-xarch=v8plusa}] [@b{-bump}] + [@b{-32}|@b{-64}] +@end ifset +@ifset TIC54X + +@emph{Target TIC54X options:} + [@b{-mcpu=54[123589]}|@b{-mcpu=54[56]lp}] [@b{-mfar-mode}|@b{-mf}] + [@b{-merrors-to-file} @var{<filename>}|@b{-me} @var{<filename>}] +@end ifset +@ifset Z8000 +@c Z8000 has no machine-dependent assembler options +@end ifset +@c man end @end smallexample -@table @code +@c man begin OPTIONS + +@table @gcctabopt @item -a[cdhlmns] Turn on listings, in any of a variety of ways: -@table @code +@table @gcctabopt @item -ac omit false conditionals @@ -369,8 +484,24 @@ Keep (in the symbol table) local symbols. On traditional a.out systems these start with @samp{L}, but different systems have different local label prefixes. +@item --listing-lhs-width=@var{number} +Set the maximum width, in words, of the output data column for an assembler +listing to @var{number}. + +@item --listing-lhs-width2=@var{number} +Set the maximum width, in words, of the output data column for continuation +lines in an assembler listing to @var{number}. + +@item --listing-rhs-width=@var{number} +Set the maximum width of an input source line, as displayed in a listing, to +@var{number} bytes. + +@item --listing-cont-lines=@var{number} +Set the maximum number of lines printed in a listing for a single line of input +to @var{number} + 1. + @item -o @var{objfile} -Name the object-file output from @code{@value{AS}} @var{objfile}. +Name the object-file output from @command{@value{AS}} @var{objfile}. @item -R Fold the data section into the text section. @@ -384,10 +515,10 @@ Remove local absolute symbols from the outgoing symbol table. @item -v @itemx -version -Print the @code{as} version. +Print the @command{as} version. @item --version -Print the @code{as} version and exit. +Print the @command{as} version and exit. @item -W @itemx --no-warn @@ -417,7 +548,7 @@ Standard input, or source files to assemble. The following options are available when @value{AS} is configured for an ARC processor. -@table @code +@table @gcctabopt @item -marc[5|6|7|8] This option selects the core processor variant. @item -EB | -EL @@ -429,15 +560,15 @@ Select either big-endian (-EB) or little-endian (-EL) output. The following options are available when @value{AS} is configured for the ARM processor family. -@table @code -@item -m[arm][1|2|3|6|7|8|9][...] +@table @gcctabopt +@item -mcpu=@var{processor}[+@var{extension}@dots{}] Specify which ARM processor variant is the target. -@item -m[arm]v[2|2a|3|3m|4|4t|5|5t] +@item -march=@var{architecture}[+@var{extension}@dots{}] Specify which ARM architecture variant is used by the target. -@item -mthumb | -mall -Enable or disable Thumb only instruction decoding. -@item -mfpa10 | -mfpa11 | -mfpe-old | -mno-fpu +@item -mfpu=@var{floating-point-format} Select which Floating Point architecture is the target. +@item -mthumb +Enable Thumb only instruction decoding. @item -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant | -moabi Select which procedure calling convention is in use. @item -EB | -EL @@ -453,7 +584,7 @@ Specify that PIC code has been generated. @ifset D10V The following options are available when @value{AS} is configured for a D10V processor. -@table @code +@table @gcctabopt @cindex D10V optimization @cindex optimization, D10V @item -O @@ -464,7 +595,7 @@ Optimize output by parallelizing instructions. @ifset D30V The following options are available when @value{AS} is configured for a D30V processor. -@table @code +@table @gcctabopt @cindex D30V optimization @cindex optimization, D30V @item -O @@ -484,7 +615,7 @@ Warn when a nop after a 32-bit multiply instruction is generated. The following options are available when @value{AS} is configured for the Intel 80960 processor. -@table @code +@table @gcctabopt @item -ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC Specify which variant of the 960 architecture is the target. @@ -502,7 +633,7 @@ error if necessary. The following options are available when @value{AS} is configured for the Mitsubishi M32R series. -@table @code +@table @gcctabopt @item --m32rx Specify which processor in the M32R family is the target. The default @@ -523,13 +654,14 @@ encountered. The following options are available when @value{AS} is configured for the Motorola 68000 series. -@table @code +@table @gcctabopt @item -l Shorten references to undefined symbols, to one word instead of two. -@item -m68000 | -m68008 | -m68010 | -m68020 | -m68030 | -m68040 | -m68060 -@itemx | -m68302 | -m68331 | -m68332 | -m68333 | -m68340 | -mcpu32 | -m5200 +@item -m68000 | -m68008 | -m68010 | -m68020 | -m68030 +@itemx | -m68040 | -m68060 | -m68302 | -m68331 | -m68332 +@itemx | -m68333 | -m68340 | -mcpu32 | -m5200 Specify what processor in the 68000 family is the target. The default is normally the 68020, but this can be changed at configuration time. @@ -547,11 +679,42 @@ unit coprocessor. The default is to assume an MMU for 68020 and up. @end table @end ifset +@ifset PDP11 + +For details about the PDP-11 machine dependent features options, +see @ref{PDP-11-Options}. + +@table @gcctabopt +@item -mpic | -mno-pic +Generate position-independent (or position-dependent) code. The +default is @option{-mpic}. + +@item -mall +@itemx -mall-extensions +Enable all instruction set extensions. This is the default. + +@item -mno-extensions +Disable all instruction set extensions. + +@item -m@var{extension} | -mno-@var{extension} +Enable (or disable) a particular instruction set extension. + +@item -m@var{cpu} +Enable the instruction set extensions supported by a particular CPU, and +disable all other extensions. + +@item -m@var{machine} +Enable the instruction set extensions supported by a particular machine +model, and disable all other extensions. +@end table + +@end ifset + @ifset PJ The following options are available when @value{AS} is configured for a picoJava processor. -@table @code +@table @gcctabopt @cindex PJ endianness @cindex endianness, PJ @@ -570,7 +733,7 @@ Generate ``little endian'' format output. The following options are available when @value{AS} is configured for the Motorola 68HC11 or 68HC12 series. -@table @code +@table @gcctabopt @item -m68hc11 | -m68hc12 Specify what processor is the target. The default is @@ -597,16 +760,16 @@ print the list of instructions with syntax and then exit. @item --generate-example print an example of instruction for each possible instruction and then exit. -This option is only useful for testing @code{@value{AS}}. +This option is only useful for testing @command{@value{AS}}. @end table @end ifset @ifset SPARC -The following options are available when @code{@value{AS}} is configured +The following options are available when @command{@value{AS}} is configured for the SPARC architecture: -@table @code +@table @gcctabopt @item -Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite @itemx -Av8plus | -Av8plusa | -Av9 | -Av9a Explicitly select a variant of the SPARC architecture. @@ -630,7 +793,7 @@ Warn when the assembler switches to another architecture. The following options are available when @value{AS} is configured for the 'c54x architecture. -@table @code +@table @gcctabopt @item -mfar-mode Enable extended addressing mode. All addresses and relocations will assume extended addressing (usually 23 bits). @@ -646,7 +809,7 @@ behaviour in the shell. The following options are available when @value{AS} is configured for a MIPS processor. -@table @code +@table @gcctabopt @item -G @var{num} This option sets the largest size of an object that can be referenced implicitly with the @code{gp} register. It is only accepted for targets that @@ -668,6 +831,7 @@ Generate ``little endian'' format output. @itemx -mips3 @itemx -mips4 @itemx -mips32 +@itemx -mips64 Generate code for a particular MIPS Instruction Set Architecture level. @samp{-mips1} corresponds to the @sc{r2000} and @sc{r3000} processors, @samp{-mips2} to the @sc{r6000} processor, and @samp{-mips3} to the @sc{r4000} @@ -690,7 +854,7 @@ understood. @cindex emulation @item --emulation=@var{name} -This option causes @code{@value{AS}} to emulate @code{@value{AS}} configured +This option causes @command{@value{AS}} to emulate @command{@value{AS}} configured for some other target, in all respects, including output format (choosing between ELF and ECOFF only), handling of pseudo-opcodes which may generate debugging information or store symbol table information, and default @@ -703,7 +867,7 @@ in the name. Using @samp{-EB} or @samp{-EL} will override the endianness selection in any case. This option is currently supported only when the primary target -@code{@value{AS}} is configured for is a MIPS ELF or ECOFF target. +@command{@value{AS}} is configured for is a MIPS ELF or ECOFF target. Furthermore, the primary target or others specified with @samp{--enable-targets=@dots{}} at configuration time must include support for the other format, if both are to be available. For example, the Irix 5 @@ -714,7 +878,7 @@ fine-grained control over the assembler's behavior, and will be supported for more processors. @item -nocpp -@code{@value{AS}} ignores this option. It is accepted for compatibility with +@command{@value{AS}} ignores this option. It is accepted for compatibility with the native tools. @need 900 @@ -727,6 +891,10 @@ Control how to deal with multiplication overflow and division by zero. (and only work for Instruction Set Architecture level 2 and higher); @samp{--break} or @samp{--no-trap} (also synonyms, and the default) take a break exception. + +@item -n +When this option is used, @command{@value{AS}} will issue a warning every +time it generates a nop instruction from a macro. @end table @end ifset @@ -734,7 +902,7 @@ break exception. The following options are available when @value{AS} is configured for an MCore processor. -@table @code +@table @gcctabopt @item -jsri2bsr @itemx -nojsri2bsr Enable or disable the JSRI to BSR transformation. By default this is enabled. @@ -761,6 +929,12 @@ Assemble for a little endian target. @end table @end ifset +@ifset MMIX +See the info pages for documentation of the MMIX-specific options. +@end ifset + +@c man end + @menu * Manual:: Structure of this Manual * GNU Assembler:: The GNU Assembler @@ -776,13 +950,13 @@ Assemble for a little endian target. @cindex manual, structure and purpose This manual is intended to describe what you need to know to use -@sc{gnu} @code{@value{AS}}. We cover the syntax expected in source files, including +@sc{gnu} @command{@value{AS}}. We cover the syntax expected in source files, including notation for symbols, constants, and expressions; the directives that -@code{@value{AS}} understands; and of course how to invoke @code{@value{AS}}. +@command{@value{AS}} understands; and of course how to invoke @command{@value{AS}}. @ifclear GENERIC We also cover special features in the @value{TARGET} -configuration of @code{@value{AS}}, including assembler directives. +configuration of @command{@value{AS}}, including assembler directives. @end ifclear @ifset GENERIC This manual also describes some of the machine-dependent features of @@ -828,10 +1002,10 @@ computer (in particular, the kinds of computers that @sc{gnu} can run on); once this assumption is granted examples and definitions need less qualification. -@code{@value{AS}} is part of a team of programs that turn a high-level +@command{@value{AS}} is part of a team of programs that turn a high-level human-readable series of instructions into a low-level computer-readable series of instructions. Different versions of -@code{@value{AS}} are used for different kinds of computer. +@command{@value{AS}} are used for different kinds of computer. @end ignore @c There used to be a section "Terminology" here, which defined @@ -846,9 +1020,11 @@ computer-readable series of instructions. Different versions of @node GNU Assembler @section The GNU Assembler -@sc{gnu} @code{as} is really a family of assemblers. +@c man begin DESCRIPTION + +@sc{gnu} @command{as} is really a family of assemblers. @ifclear GENERIC -This manual describes @code{@value{AS}}, a member of that family which is +This manual describes @command{@value{AS}}, a member of that family which is configured for the @value{TARGET} architectures. @end ifclear If you use (or have used) the @sc{gnu} assembler on one architecture, you @@ -858,9 +1034,9 @@ including object file formats, most assembler directives (often called @dfn{pseudo-ops}) and assembler syntax.@refill @cindex purpose of @sc{gnu} assembler -@code{@value{AS}} is primarily intended to assemble the output of the +@command{@value{AS}} is primarily intended to assemble the output of the @sc{gnu} C compiler @code{@value{GCC}} for use by the linker -@code{@value{LD}}. Nevertheless, we've tried to make @code{@value{AS}} +@code{@value{LD}}. Nevertheless, we've tried to make @command{@value{AS}} assemble correctly everything that other assemblers for the same machine would assemble. @ifset VAX @@ -869,12 +1045,14 @@ Any exceptions are documented explicitly (@pxref{Machine Dependencies}). @ifset M680X0 @c This remark should appear in generic version of manual; assumption @c here is that generic version sets M680x0. -This doesn't mean @code{@value{AS}} always uses the same syntax as another +This doesn't mean @command{@value{AS}} always uses the same syntax as another assembler for the same architecture; for example, we know of several incompatible versions of 680x0 assembly language syntax. @end ifset -Unlike older assemblers, @code{@value{AS}} is designed to assemble a source +@c man end + +Unlike older assemblers, @command{@value{AS}} is designed to assemble a source program in one pass of the source file. This has a subtle impact on the @kbd{.org} directive (@pxref{Org,,@code{.org}}). @@ -889,20 +1067,20 @@ are typically different in different file formats. @xref{Symbol Attributes,,Symbol Attributes}. @ifclear GENERIC @ifclear MULTI-OBJ -On the @value{TARGET}, @code{@value{AS}} is configured to produce +On the @value{TARGET}, @command{@value{AS}} is configured to produce @value{OBJ-NAME} format object files. @end ifclear @c The following should exhaust all configs that set MULTI-OBJ, ideally @ifset A29K -On the @value{TARGET}, @code{@value{AS}} can be configured to produce either +On the @value{TARGET}, @command{@value{AS}} can be configured to produce either @code{a.out} or COFF format object files. @end ifset @ifset I960 -On the @value{TARGET}, @code{@value{AS}} can be configured to produce either +On the @value{TARGET}, @command{@value{AS}} can be configured to produce either @code{b.out} or COFF format object files. @end ifset @ifset HPPA -On the @value{TARGET}, @code{@value{AS}} can be configured to produce either +On the @value{TARGET}, @command{@value{AS}} can be configured to produce either SOM or ELF format object files. @end ifset @end ifclear @@ -911,7 +1089,8 @@ SOM or ELF format object files. @section Command Line @cindex command line conventions -After the program name @code{@value{AS}}, the command line may contain + +After the program name @command{@value{AS}}, the command line may contain options and file names. Options may appear in any order, and may be before, after, or between file names. The order of file names is significant. @@ -919,12 +1098,12 @@ significant. @cindex standard input, as input file @kindex -- @file{--} (two hyphens) by itself names the standard input file -explicitly, as one of the files for @code{@value{AS}} to assemble. +explicitly, as one of the files for @command{@value{AS}} to assemble. @cindex options, command line Except for @samp{--} any command line argument that begins with a hyphen (@samp{-}) is an option. Each option changes the behavior of -@code{@value{AS}}. No option changes the way another option works. An +@command{@value{AS}}. No option changes the way another option works. An option is a @samp{-} followed by one or more letters; the case of the letter is important. All options are optional. @@ -945,7 +1124,7 @@ standard). These two command lines are equivalent: @cindex source program @cindex files, input We use the phrase @dfn{source program}, abbreviated @dfn{source}, to -describe the program input to one run of @code{@value{AS}}. The program may +describe the program input to one run of @command{@value{AS}}. The program may be in one or more files; how the source is partitioned into files doesn't change the meaning of the source. @@ -954,26 +1133,29 @@ doesn't change the meaning of the source. The source program is a concatenation of the text in all the files, in the order specified. -Each time you run @code{@value{AS}} it assembles exactly one source +@c man begin DESCRIPTION +Each time you run @command{@value{AS}} it assembles exactly one source program. The source program is made up of one or more files. (The standard input is also a file.) -You give @code{@value{AS}} a command line that has zero or more input file +You give @command{@value{AS}} a command line that has zero or more input file names. The input files are read (from left file name to right). A command line argument (in any position) that has no special meaning is taken to be an input file name. -If you give @code{@value{AS}} no file names it attempts to read one input file -from the @code{@value{AS}} standard input, which is normally your terminal. You -may have to type @key{ctl-D} to tell @code{@value{AS}} there is no more program +If you give @command{@value{AS}} no file names it attempts to read one input file +from the @command{@value{AS}} standard input, which is normally your terminal. You +may have to type @key{ctl-D} to tell @command{@value{AS}} there is no more program to assemble. Use @samp{--} if you need to explicitly name the standard input file in your command line. -If the source is empty, @code{@value{AS}} produces a small, empty object +If the source is empty, @command{@value{AS}} produces a small, empty object file. +@c man end + @subheading Filenames and Line-numbers @cindex input file linenumbers @@ -984,12 +1166,12 @@ number in a physical file; the other refers to a line number in a ``logical'' file. @xref{Errors, ,Error and Warning Messages}. @dfn{Physical files} are those files named in the command line given -to @code{@value{AS}}. +to @command{@value{AS}}. @dfn{Logical files} are simply names declared explicitly by assembler directives; they bear no relation to physical files. Logical file names help -error messages reflect the original source file, when @code{@value{AS}} source -is itself synthesized from other files. @code{@value{AS}} understands the +error messages reflect the original source file, when @command{@value{AS}} source +is itself synthesized from other files. @command{@value{AS}} understands the @samp{#} directives emitted by the @code{@value{GCC}} preprocessor. See also @ref{File,,@code{.file}}. @@ -1000,7 +1182,7 @@ is itself synthesized from other files. @code{@value{AS}} understands the @cindex output file @kindex a.out @kindex .o -Every time you run @code{@value{AS}} it produces an output file, which is +Every time you run @command{@value{AS}} it produces an output file, which is your assembly language program translated into numbers. This file is the object file. Its default name is @ifclear BOUT @@ -1010,9 +1192,9 @@ is the object file. Its default name is @ifset GENERIC @code{a.out}, or @end ifset -@code{b.out} when @code{@value{AS}} is configured for the Intel 80960. +@code{b.out} when @command{@value{AS}} is configured for the Intel 80960. @end ifset -You can give it another name by using the @code{-o} option. Conventionally, +You can give it another name by using the @option{-o} option. Conventionally, object file names end with @file{.o}. The default name is used for historical reasons: older assemblers were capable of assembling self-contained programs directly into a runnable program. (For some formats, this isn't currently @@ -1031,15 +1213,19 @@ information for the debugger. @node Errors @section Error and Warning Messages +@c man begin DESCRIPTION + @cindex error messages @cindex warning messages @cindex messages from assembler -@code{@value{AS}} may write warnings and error messages to the standard error +@command{@value{AS}} may write warnings and error messages to the standard error file (usually your terminal). This should not happen when a compiler -runs @code{@value{AS}} automatically. Warnings report an assumption made so -that @code{@value{AS}} could keep assembling a flawed program; errors report a +runs @command{@value{AS}} automatically. Warnings report an assumption made so +that @command{@value{AS}} could keep assembling a flawed program; errors report a grave problem that stops the assembly. +@c man end + @cindex format of warning messages Warning messages have the format @@ -1090,7 +1276,9 @@ to the @value{TARGET}. to particular machine architectures. @end ifset -If you are invoking @code{@value{AS}} via the @sc{gnu} C compiler (version 2), +@c man begin DESCRIPTION + +If you are invoking @command{@value{AS}} via the @sc{gnu} C compiler (version 2), you can use the @samp{-Wa} option to pass arguments through to the assembler. The assembler arguments must be separated from each other (and the @samp{-Wa}) by commas. For example: @@ -1110,6 +1298,8 @@ command-line options are automatically passed to the assembler by the compiler. precisely what options it passes to each compilation pass, including the assembler.) +@c man end + @menu * a:: -a[cdhlns] enable listings * D:: -D for compatibility @@ -1123,6 +1313,7 @@ assembler.) @end ifset * L:: -L to retain local labels +* listing:: --listing-XXX to configure listing output * M:: -M or --mri to assemble in MRI compatibility mode * MD:: --MD for dependency tracking * o:: -o to name the object file @@ -1135,7 +1326,7 @@ assembler.) @end menu @node a -@section Enable Listings: @code{-a[cdhlns]} +@section Enable Listings: @option{-a[cdhlns]} @kindex -a @kindex -ac @@ -1176,20 +1367,27 @@ listing-control directives have no effect. The letters after @samp{-a} may be combined into one option, @emph{e.g.}, @samp{-aln}. +Note if the assembler source is coming from the standard input (eg because it +is being created by @code{@value{GCC}} and the @samp{-pipe} command line switch +is being used) then the listing will not contain any comments or preprocessor +directives. This is because the listing code buffers input source lines from +stdin only after they have been preprocessed by the assembler. This reduces +memory usage and makes the code more efficient. + @node D -@section @code{-D} +@section @option{-D} @kindex -D This option has no effect whatsoever, but it is accepted to make it more likely that scripts written for other assemblers also work with -@code{@value{AS}}. +@command{@value{AS}}. @node f -@section Work Faster: @code{-f} +@section Work Faster: @option{-f} @kindex -f @cindex trusted compiler -@cindex faster processing (@code{-f}) +@cindex faster processing (@option{-f}) @samp{-f} should only be used when assembling programs written by a (trusted) compiler. @samp{-f} stops the assembler from doing whitespace and comment preprocessing on @@ -1198,27 +1396,27 @@ the input file(s) before assembling them. @xref{Preprocessing, @quotation @emph{Warning:} if you use @samp{-f} when the files actually need to be -preprocessed (if they contain comments, for example), @code{@value{AS}} does +preprocessed (if they contain comments, for example), @command{@value{AS}} does not work correctly. @end quotation @node I -@section @code{.include} search path: @code{-I} @var{path} +@section @code{.include} search path: @option{-I} @var{path} @kindex -I @var{path} @cindex paths for @code{.include} @cindex search path for @code{.include} @cindex @code{include} directive search path Use this option to add a @var{path} to the list of directories -@code{@value{AS}} searches for files specified in @code{.include} -directives (@pxref{Include,,@code{.include}}). You may use @code{-I} as +@command{@value{AS}} searches for files specified in @code{.include} +directives (@pxref{Include,,@code{.include}}). You may use @option{-I} as many times as necessary to include a variety of paths. The current -working directory is always searched first; after that, @code{@value{AS}} +working directory is always searched first; after that, @command{@value{AS}} searches any @samp{-I} directories in the same order as they were specified (left to right) on the command line. @node K -@section Difference Tables: @code{-K} +@section Difference Tables: @option{-K} @kindex -K @ifclear DIFF-TBL-KLUGE @@ -1233,14 +1431,14 @@ alteration on other platforms. @ifset DIFF-TBL-KLUGE @cindex difference tables, warning @cindex warning for altered difference tables -@code{@value{AS}} sometimes alters the code emitted for directives of the form +@command{@value{AS}} sometimes alters the code emitted for directives of the form @samp{.word @var{sym1}-@var{sym2}}; @pxref{Word,,@code{.word}}. You can use the @samp{-K} option if you want a warning issued when this is done. @end ifset @node L -@section Include Local Labels: @code{-L} +@section Include Local Labels: @option{-L} @kindex -L @cindex local labels, retaining in output @@ -1248,10 +1446,10 @@ Labels beginning with @samp{L} (upper case only) are called @dfn{local labels}. @xref{Symbol Names}. Normally you do not see such labels when debugging, because they are intended for the use of programs (like compilers) that compose assembler programs, not for your notice. -Normally both @code{@value{AS}} and @code{@value{LD}} discard such labels, so you do not +Normally both @command{@value{AS}} and @code{@value{LD}} discard such labels, so you do not normally debug with them. -This option tells @code{@value{AS}} to retain those @samp{L@dots{}} symbols +This option tells @command{@value{AS}} to retain those @samp{L@dots{}} symbols in the object file. Usually if you do this you also tell the linker @code{@value{LD}} to preserve symbols whose names begin with @samp{L}. @@ -1261,19 +1459,58 @@ target is allowed to redefine the local label prefix. On the HPPA local labels begin with @samp{L$}. @end ifset +@node listing +@section Configuring listing output: @option{--listing} + +The listing feature of the assembler can be enabled via the command line switch +@samp{-a} (@pxref{a}). This feature combines the input source file(s) with a +hex dump of the corresponding locations in the output object file, and displays +them as a listing file. The format of this listing can be controlled by pseudo +ops inside the assembler source (@pxref{List} @pxref{Title} @pxref{Sbttl} +@pxref{Psize} @pxref{Eject}) and also by the following switches: + +@table @gcctabopt +@item --listing-lhs-width=@samp{number} +@kindex --listing-lhs-width +@cindex Width of first line disassembly output +Sets the maximum width, in words, of the first line of the hex byte dump. This +dump appears on the left hand side of the listing output. + +@item --listing-lhs-width2=@samp{number} +@kindex --listing-lhs-width2 +@cindex Width of continuation lines of disassembly output +Sets the maximum width, in words, of any further lines of the hex byte dump for +a given inut source line. If this value is not specified, it defaults to being +the same as the value specified for @samp{--listing-lhs-width}. If neither +switch is used the default is to one. + +@item --listing-rhs-width=@samp{number} +@kindex --listing-rhs-width +@cindex Width of source line output +Sets the maximum width, in characters, of the source line that is displayed +alongside the hex dump. The default value for this parameter is 100. The +source line is displayed on the right hand side of the listing output. + +@item --listing-cont-lines=@samp{number} +@kindex --listing-cont-lines +@cindex Maximum number of continuation lines +Sets the maximum number of continuation lines of hex dump that will be +displayed for a given single line of source input. The default value is 4. +@end table + @node M -@section Assemble in MRI Compatibility Mode: @code{-M} +@section Assemble in MRI Compatibility Mode: @option{-M} @kindex -M @cindex MRI compatibility mode -The @code{-M} or @code{--mri} option selects MRI compatibility mode. This -changes the syntax and pseudo-op handling of @code{@value{AS}} to make it +The @option{-M} or @option{--mri} option selects MRI compatibility mode. This +changes the syntax and pseudo-op handling of @command{@value{AS}} to make it compatible with the @code{ASM68K} or the @code{ASM960} (depending upon the configured target) assembler from Microtec Research. The exact nature of the MRI syntax will not be documented here; see the MRI manuals for more information. Note in particular that the handling of macros and macro arguments is somewhat different. The purpose of this option is to permit -assembling existing MRI assembler code using @code{@value{AS}}. +assembling existing MRI assembler code using @command{@value{AS}}. The MRI compatibility is not complete. Certain operations of the MRI assembler depend upon its object file format, and can not be supported using other object @@ -1284,7 +1521,7 @@ individually. These are: @item global symbols in common section The m68k MRI assembler supports common sections which are merged by the linker. -Other object file formats do not support this. @code{@value{AS}} handles +Other object file formats do not support this. @command{@value{AS}} handles common sections by treating them as a single common symbol. It permits local symbols to be defined within a common section, but it can not support global symbols, since it has no way to describe them. @@ -1299,7 +1536,7 @@ are not support by other object file formats. The MRI @code{END} pseudo-op permits the specification of a start address. This is not supported by other object file formats. The start address may -instead be specified using the @code{-e} option to the linker, or in a linker +instead be specified using the @option{-e} option to the linker, or in a linker script. @item @code{IDNT}, @code{.ident} and @code{NAME} pseudo-ops @@ -1310,14 +1547,14 @@ name to the output file. This is not supported by other object file formats. @item @code{ORG} pseudo-op The m68k MRI @code{ORG} pseudo-op begins an absolute section at a given -address. This differs from the usual @code{@value{AS}} @code{.org} pseudo-op, +address. This differs from the usual @command{@value{AS}} @code{.org} pseudo-op, which changes the location within the current section. Absolute sections are not supported by other object file formats. The address of a section may be assigned within a linker script. @end itemize There are some other features of the MRI assembler which are not supported by -@code{@value{AS}}, typically either because they are difficult or because they +@command{@value{AS}}, typically either because they are difficult or because they seem of little consequence. Some of these may be supported in future releases. @itemize @bullet @@ -1342,7 +1579,7 @@ The m68k @code{NOOBJ} pseudo-op is not supported. @item @code{OPT} branch control options The m68k @code{OPT} branch control options---@code{B}, @code{BRS}, @code{BRB}, -@code{BRL}, and @code{BRW}---are ignored. @code{@value{AS}} automatically +@code{BRL}, and @code{BRW}---are ignored. @command{@value{AS}} automatically relaxes all branches, whether forward or backward, to an appropriate size, so these options serve no purpose. @@ -1393,13 +1630,13 @@ The i960 @code{.setreal} pseudo-op is not supported. @end itemize @node MD -@section Dependency tracking: @code{--MD} +@section Dependency tracking: @option{--MD} @kindex --MD @cindex dependency tracking @cindex make rules -@code{@value{AS}} can generate a dependency file for the file it creates. This +@command{@value{AS}} can generate a dependency file for the file it creates. This file consists of a single rule suitable for @code{make} describing the dependencies of the main source file. @@ -1408,12 +1645,12 @@ The rule is written to the file named in its argument. This feature is used in the automatic updating of makefiles. @node o -@section Name the Object File: @code{-o} +@section Name the Object File: @option{-o} @kindex -o @cindex naming object file @cindex object file name -There is always one object file output when you run @code{@value{AS}}. By +There is always one object file output when you run @command{@value{AS}}. By default it has the name @ifset GENERIC @ifset I960 @@ -1434,65 +1671,65 @@ default it has the name You use this option (which takes exactly one filename) to give the object file a different name. -Whatever the object file is called, @code{@value{AS}} overwrites any +Whatever the object file is called, @command{@value{AS}} overwrites any existing file of the same name. @node R -@section Join Data and Text Sections: @code{-R} +@section Join Data and Text Sections: @option{-R} @kindex -R @cindex data and text sections, joining @cindex text and data sections, joining @cindex joining text and data sections @cindex merging text and data sections -@code{-R} tells @code{@value{AS}} to write the object file as if all +@option{-R} tells @command{@value{AS}} to write the object file as if all data-section data lives in the text section. This is only done at the very last moment: your binary data are the same, but data section parts are relocated differently. The data section part of your object file is zero bytes long because all its bytes are appended to the text section. (@xref{Sections,,Sections and Relocation}.) -When you specify @code{-R} it would be possible to generate shorter +When you specify @option{-R} it would be possible to generate shorter address displacements (because we do not have to cross between text and data section). We refrain from doing this simply for compatibility with -older versions of @code{@value{AS}}. In future, @code{-R} may work this way. +older versions of @command{@value{AS}}. In future, @option{-R} may work this way. @ifset COFF -When @code{@value{AS}} is configured for COFF output, +When @command{@value{AS}} is configured for COFF output, this option is only useful if you use sections named @samp{.text} and @samp{.data}. @end ifset @ifset HPPA -@code{-R} is not supported for any of the HPPA targets. Using -@code{-R} generates a warning from @code{@value{AS}}. +@option{-R} is not supported for any of the HPPA targets. Using +@option{-R} generates a warning from @command{@value{AS}}. @end ifset @node statistics -@section Display Assembly Statistics: @code{--statistics} +@section Display Assembly Statistics: @option{--statistics} @kindex --statistics @cindex statistics, about assembly @cindex time, total for assembly @cindex space used, maximum for assembly Use @samp{--statistics} to display two statistics about the resources used by -@code{@value{AS}}: the maximum amount of space allocated during the assembly +@command{@value{AS}}: the maximum amount of space allocated during the assembly (in bytes), and the total execution time taken for the assembly (in @sc{cpu} seconds). @node traditional-format -@section Compatible output: @code{--traditional-format} +@section Compatible output: @option{--traditional-format} @kindex --traditional-format -For some targets, the output of @code{@value{AS}} is different in some ways +For some targets, the output of @command{@value{AS}} is different in some ways from the output of some existing assembler. This switch requests -@code{@value{AS}} to use the traditional format instead. +@command{@value{AS}} to use the traditional format instead. For example, it disables the exception frame optimizations which -@code{@value{AS}} normally does by default on @code{@value{GCC}} output. +@command{@value{AS}} normally does by default on @code{@value{GCC}} output. @node v -@section Announce Version: @code{-v} +@section Announce Version: @option{-v} @kindex -v @kindex -version @@ -1503,41 +1740,41 @@ option @samp{-v} (which you can also spell as @samp{-version}) on the command line. @node W -@section Control Warnings: @code{-W}, @code{--warn}, @code{--no-warn}, @code{--fatal-warnings} +@section Control Warnings: @option{-W}, @option{--warn}, @option{--no-warn}, @option{--fatal-warnings} -@code{@value{AS}} should never give a warning or error message when +@command{@value{AS}} should never give a warning or error message when assembling compiler output. But programs written by people often -cause @code{@value{AS}} to give a warning that a particular assumption was +cause @command{@value{AS}} to give a warning that a particular assumption was made. All such warnings are directed to the standard error file. @kindex @samp{-W} @kindex @samp{--no-warn} @cindex suppressing warnings @cindex warnings, suppressing -If you use the @code{-W} and @code{--no-warn} options, no warnings are issued. +If you use the @option{-W} and @option{--no-warn} options, no warnings are issued. This only affects the warning messages: it does not change any particular of -how @code{@value{AS}} assembles your file. Errors, which stop the assembly, +how @command{@value{AS}} assembles your file. Errors, which stop the assembly, are still reported. @kindex @samp{--fatal-warnings} @cindex errors, caused by warnings @cindex warnings, causing error -If you use the @code{--fatal-warnings} option, @code{@value{AS}} considers +If you use the @option{--fatal-warnings} option, @command{@value{AS}} considers files that generate warnings to be in error. @kindex @samp{--warn} @cindex warnings, switching on -You can switch these options off again by specifying @code{--warn}, which +You can switch these options off again by specifying @option{--warn}, which causes warnings to be output as usual. @node Z -@section Generate Object File in Spite of Errors: @code{-Z} +@section Generate Object File in Spite of Errors: @option{-Z} @cindex object file, after errors @cindex errors, continuing after -After an error message, @code{@value{AS}} normally produces no output. If for +After an error message, @command{@value{AS}} normally produces no output. If for some reason you are interested in object file output even after -@code{@value{AS}} gives an error message on your program, use the @samp{-Z} -option. If there are any errors, @code{@value{AS}} continues anyways, and +@command{@value{AS}} gives an error message on your program, use the @samp{-Z} +option. If there are any errors, @command{@value{AS}} continues anyways, and writes an object file after a final warning message of the form @samp{@var{n} errors, @var{m} warnings, generating bad object file.} @@ -1547,13 +1784,13 @@ errors, @var{m} warnings, generating bad object file.} @cindex machine-independent syntax @cindex syntax, machine-independent This chapter describes the machine-independent syntax allowed in a -source file. @code{@value{AS}} syntax is similar to what many other +source file. @command{@value{AS}} syntax is similar to what many other assemblers use; it is inspired by the BSD 4.2 @ifclear VAX assembler. @end ifclear @ifset VAX -assembler, except that @code{@value{AS}} does not assemble Vax bit-fields. +assembler, except that @command{@value{AS}} does not assemble Vax bit-fields. @end ifset @menu @@ -1569,7 +1806,7 @@ assembler, except that @code{@value{AS}} does not assemble Vax bit-fields. @section Preprocessing @cindex preprocessing -The @code{@value{AS}} internal preprocessor: +The @command{@value{AS}} internal preprocessor: @itemize @bullet @cindex whitespace, removed by preprocessor @item @@ -1626,7 +1863,7 @@ as exactly one space. @section Comments @cindex comments -There are two ways of rendering comments to @code{@value{AS}}. In both +There are two ways of rendering comments to @command{@value{AS}}. In both cases the comment is equivalent to one space. Anything from @samp{/*} through the next @samp{*/} is a comment. @@ -1668,9 +1905,15 @@ is considered a comment and is ignored. The line comment character is @ifset I960 @samp{#} on the i960; @end ifset +@ifset PDP11 +@samp{;} for the PDP-11; +@end ifset @ifset PJ @samp{;} for picoJava; @end ifset +@ifset PPC +@samp{;} for Motorola PowerPC; +@end ifset @ifset SH @samp{!} for the Hitachi SH; @end ifset @@ -1686,6 +1929,9 @@ is considered a comment and is ignored. The line comment character is @ifset M68HC11 @samp{#} on the 68HC11 and 68HC12; @end ifset +@ifset M880X0 +@samp{;} on the M880x0; +@end ifset @ifset VAX @samp{#} on the Vax; @end ifset @@ -1696,7 +1942,7 @@ is considered a comment and is ignored. The line comment character is @samp{#} on the V850; @end ifset see @ref{Machine Dependencies}. @refill -@c FIXME What about m88k, i860? +@c FIXME What about i860? @ifset GENERIC On some machines there are two different line comment characters. One @@ -1729,7 +1975,7 @@ the line is ignored. (Just like a comment.) # This is logical line # 36. @end smallexample This feature is deprecated, and may disappear from future versions -of @code{@value{AS}}. +of @command{@value{AS}}. @node Symbol Intro @section Symbols @@ -1827,7 +2073,7 @@ directive: typically valid for any computer. If the symbol begins with a letter the statement is an assembly language @dfn{instruction}: it assembles into a machine language instruction. @ifset GENERIC -Different versions of @code{@value{AS}} for different computers +Different versions of @command{@value{AS}} for different computers recognize different instructions. In fact, the same symbol may represent a different instruction in a different computer's assembly language.@refill @@ -1898,8 +2144,8 @@ double-quotes or null characters. The way to get special characters into a string is to @dfn{escape} these characters: precede them with a backslash @samp{\} character. For example @samp{\\} represents one backslash: the first @code{\} is an escape which tells -@code{@value{AS}} to interpret the second character literally as a backslash -(which prevents @code{@value{AS}} from recognizing the second @code{\} as an +@command{@value{AS}} to interpret the second character literally as a backslash +(which prevents @command{@value{AS}} from recognizing the second @code{\} as an escape character). The complete list of escapes follows. @cindex escape codes, character @@ -1982,8 +2228,8 @@ this character, because an unescaped @samp{"} would end the string. Any other character when escaped by @kbd{\} gives a warning, but assembles as if the @samp{\} was not present. The idea is that if you used an escape sequence you clearly didn't want the literal -interpretation of the following character. However @code{@value{AS}} has no -other interpretation, so @code{@value{AS}} knows it is giving you the wrong +interpretation of the following character. However @command{@value{AS}} has no +other interpretation, so @command{@value{AS}} knows it is giving you the wrong code and warns you of the fact. @end table @@ -2023,7 +2269,7 @@ H8/500) immediately following an acute accent is taken as a literal character and does not count as the end of a statement. The value of a character constant in a numeric expression is the machine's byte-wide code for -that character. @code{@value{AS}} assumes your character code is ASCII: +that character. @command{@value{AS}} assumes your character code is ASCII: @kbd{'A} means 65, @kbd{'B} means 66, and so on. @refill @node Numbers @@ -2031,7 +2277,7 @@ that character. @code{@value{AS}} assumes your character code is ASCII: @cindex constants, number @cindex number constants -@code{@value{AS}} distinguishes three kinds of numbers according to how they +@command{@value{AS}} distinguishes three kinds of numbers according to how they are stored in the target machine. @emph{Integers} are numbers that would fit into an @code{int} in the C language. @emph{Bignums} are integers, but they are stored in more than 32 bits. @emph{Flonums} @@ -2096,10 +2342,10 @@ integers are permitted while bignums are not. @cindex precision, floating point A @dfn{flonum} represents a floating point number. The translation is indirect: a decimal floating point number from the text is converted by -@code{@value{AS}} to a generic binary floating point number of more than +@command{@value{AS}} to a generic binary floating point number of more than sufficient precision. This generic floating point number is converted to a particular computer's floating point format (or formats) by a -portion of @code{@value{AS}} specialized to that computer. +portion of @command{@value{AS}} specialized to that computer. A flonum is written by writing (in order) @itemize @bullet @@ -2110,7 +2356,7 @@ The digit @samp{0}. @end ifset @item -A letter, to tell @code{@value{AS}} the rest of the number is a flonum. +A letter, to tell @command{@value{AS}} the rest of the number is a flonum. @ifset GENERIC @kbd{e} is recommended. Case is not important. @ignore @@ -2179,9 +2425,9 @@ One or more decimal digits. At least one of the integer part or the fractional part must be present. The floating point number has the usual base-10 value. -@code{@value{AS}} does all processing using integers. Flonums are computed +@command{@value{AS}} does all processing using integers. Flonums are computed independently of any floating point hardware in the computer running -@code{@value{AS}}. +@command{@value{AS}}. @ifclear GENERIC @ifset I960 @@ -2199,7 +2445,7 @@ specify two numbers separated by a colon--- @var{mask}:@var{value} @end example @noindent -@code{@value{AS}} applies a bitwise @sc{and} between @var{mask} and +@command{@value{AS}} applies a bitwise @sc{and} between @var{mask} and @var{value}. The resulting number is then packed @@ -2241,11 +2487,11 @@ For example there may be a ``read only'' section. @cindex linker, and assembler @cindex assembler, and linker The linker @code{@value{LD}} reads many object files (partial programs) and -combines their contents to form a runnable program. When @code{@value{AS}} +combines their contents to form a runnable program. When @command{@value{AS}} emits an object file, the partial program is assumed to start at address 0. @code{@value{LD}} assigns the final addresses for the partial program, so that different partial programs do not overlap. This is actually an -oversimplification, but it suffices to explain how @code{@value{AS}} uses +oversimplification, but it suffices to explain how @command{@value{AS}} uses sections. @code{@value{LD}} moves blocks of bytes of your program to their run-time @@ -2258,12 +2504,12 @@ the proper run-time addresses. @ifset H8 For the H8/300 and H8/500, and for the Hitachi SH, -@code{@value{AS}} pads sections if needed to +@command{@value{AS}} pads sections if needed to ensure they end on a word (sixteen bit) boundary. @end ifset @cindex standard assembler sections -An object file written by @code{@value{AS}} has at least three sections, any +An object file written by @command{@value{AS}} has at least three sections, any of which may be empty. These are named @dfn{text}, @dfn{data} and @dfn{bss} sections. @@ -2271,7 +2517,7 @@ of which may be empty. These are named @dfn{text}, @dfn{data} and @ifset GENERIC When it generates COFF output, @end ifset -@code{@value{AS}} can also generate whatever other named sections you specify +@command{@value{AS}} can also generate whatever other named sections you specify using the @samp{.section} directive (@pxref{Section,,@code{.section}}). If you do not use any directives that place output in the @samp{.text} or @samp{.data} sections, these sections still exist, but are empty. @@ -2279,16 +2525,16 @@ or @samp{.data} sections, these sections still exist, but are empty. @ifset HPPA @ifset GENERIC -When @code{@value{AS}} generates SOM or ELF output for the HPPA, +When @command{@value{AS}} generates SOM or ELF output for the HPPA, @end ifset -@code{@value{AS}} can also generate whatever other named sections you +@command{@value{AS}} can also generate whatever other named sections you specify using the @samp{.space} and @samp{.subspace} directives. See @cite{HP9000 Series 800 Assembly Language Reference Manual} (HP 92432-90001) for details on the @samp{.space} and @samp{.subspace} assembler directives. @ifset SOM -Additionally, @code{@value{AS}} uses different names for the standard +Additionally, @command{@value{AS}} uses different names for the standard text, data, and bss sections when generating SOM output. Program text is placed into the @samp{$CODE$} section, data into @samp{$DATA$}, and BSS into @samp{$BSS$}. @@ -2305,7 +2551,7 @@ section starts at address @code{0}, the data section at address @end ifset To let @code{@value{LD}} know which data changes when the sections are -relocated, and how to change that data, @code{@value{AS}} also writes to the +relocated, and how to change that data, @command{@value{AS}} also writes to the object file details of the relocation needed. To perform relocation @code{@value{LD}} must know, each time an address in the object file is mentioned: @@ -2326,12 +2572,12 @@ Is the reference to an address ``Program-Counter relative''? @cindex addresses, format of @cindex section-relative addressing -In fact, every address @code{@value{AS}} ever uses is expressed as +In fact, every address @command{@value{AS}} ever uses is expressed as @display (@var{section}) + (@var{offset into section}) @end display @noindent -Further, most expressions @code{@value{AS}} computes have this section-relative +Further, most expressions @command{@value{AS}} computes have this section-relative nature. @ifset SOM (For some object formats, such as SOM for the HPPA, some expressions are @@ -2367,7 +2613,7 @@ the addresses of all partial programs' text sections. Likewise for data and bss sections. Some sections are manipulated by @code{@value{LD}}; others are invented for -use of @code{@value{AS}} and have no meaning except during assembly. +use of @command{@value{AS}} and have no meaning except during assembly. @node Ld Sections @section Linker Sections @@ -2386,7 +2632,7 @@ use of @code{@value{AS}} and have no meaning except during assembly. @itemx text section @itemx data section @end ifset -These sections hold your program. @code{@value{AS}} and @code{@value{LD}} treat them as +These sections hold your program. @command{@value{AS}} and @code{@value{LD}} treat them as separate but equal sections. Anything you can say of one section is true another. @ifset aout-bout @@ -2479,11 +2725,11 @@ DDDD}\boxit{2cm}{\tt 00000}\ \dots\hfil} @cindex internal assembler sections @cindex sections in messages, internal -These sections are meant only for the internal use of @code{@value{AS}}. They +These sections are meant only for the internal use of @command{@value{AS}}. They have no meaning at run-time. You do not really need to know about these -sections for most purposes; but they can be mentioned in @code{@value{AS}} +sections for most purposes; but they can be mentioned in @command{@value{AS}} warning messages, so it might be helpful to have an idea of their -meanings to @code{@value{AS}}. These sections are used to permit the +meanings to @command{@value{AS}}. These sections are used to permit the value of every expression in your assembly language program to be a section-relative address. @@ -2529,7 +2775,7 @@ text or data @end ifset @end ifclear that you want to end up near to each other in the object file, even though they -are not contiguous in the assembler source. @code{@value{AS}} allows you to +are not contiguous in the assembler source. @command{@value{AS}} allows you to use @dfn{subsections} for this purpose. Within each section, there can be numbered subsections with values from 0 to 8192. Objects assembled into the same subsection go into the object file together with other objects in the same @@ -2545,7 +2791,7 @@ goes in subsection number zero. @ifset GENERIC Each subsection is zero-padded up to a multiple of four bytes. (Subsections may be padded a different amount on different flavors -of @code{@value{AS}}.) +of @command{@value{AS}}.) @end ifset @ifclear GENERIC @ifset H8 @@ -2607,7 +2853,7 @@ begins in @code{text 0}. For instance: Each section has a @dfn{location counter} incremented by one for every byte assembled into that section. Because subsections are merely a convenience -restricted to @code{@value{AS}} there is no concept of a subsection location +restricted to @command{@value{AS}} there is no concept of a subsection location counter. There is no way to directly manipulate a location counter---but the @code{.align} directive changes it, and any label definition captures its current value. The location counter of the section where statements are being @@ -2648,7 +2894,7 @@ to debug. @quotation @cindex debuggers, and symbol order -@emph{Warning:} @code{@value{AS}} does not place symbols in the object file in +@emph{Warning:} @command{@value{AS}} does not place symbols in the object file in the same order they were declared. This may break some debuggers. @end quotation @@ -2674,7 +2920,7 @@ definitions. @ifset HPPA On the HPPA, the usual form for a label need not be immediately followed by a colon, but instead must start in column zero. Only one label may be defined on -a single line. To work around this, the HPPA version of @code{@value{AS}} also +a single line. To work around this, the HPPA version of @command{@value{AS}} also provides a special directive @code{.label} for defining labels more flexibly. @end ifset @@ -2729,56 +2975,92 @@ in a program. @cindex temporary symbol names @cindex symbol names, temporary Local symbols help compilers and programmers use names temporarily. -There are ten local symbol names, which are re-used throughout the -program. You may refer to them using the names @samp{0} @samp{1} -@dots{} @samp{9}. To define a local symbol, write a label of the form -@samp{@b{N}:} (where @b{N} represents any digit). To refer to the most -recent previous definition of that symbol write @samp{@b{N}b}, using the -same digit as when you defined the label. To refer to the next -definition of a local label, write @samp{@b{N}f}---where @b{N} gives you -a choice of 10 forward references. The @samp{b} stands for -``backwards'' and the @samp{f} stands for ``forwards''. - -Local symbols are not emitted by the current @sc{gnu} C compiler. - -There is no restriction on how you can use these labels, but -remember that at any point in the assembly you can refer to at most -10 prior local labels and to at most 10 forward local labels. - -Local symbol names are only a notation device. They are immediately -transformed into more conventional symbol names before the assembler -uses them. The symbol names stored in the symbol table, appearing in -error messages and optionally emitted to the object file have these +They create symbols which are guaranteed to be unique over the entire scope of +the input source code and which can be referred to by a simple notation. +To define a local symbol, write a label of the form @samp{@b{N}:} (where @b{N} +represents any positive integer). To refer to the most recent previous +definition of that symbol write @samp{@b{N}b}, using the same number as when +you defined the label. To refer to the next definition of a local label, write +@samp{@b{N}f}--- The @samp{b} stands for``backwards'' and the @samp{f} stands +for ``forwards''. + +There is no restriction on how you can use these labels, and you can reuse them +too. So that it is possible to repeatedly define the same local label (using +the same number @samp{@b{N}}), although you can only refer to the most recently +defined local label of that number (for a backwards reference) or the next +definition of a specific local label for a forward reference. It is also worth +noting that the first 10 local labels (@samp{@b{0:}}@dots{}@samp{@b{9:}}) are +implemented in a slightly more efficient manner than the others. + +Here is an example: + +@smallexample +1: branch 1f +2: branch 1b +1: branch 2f +2: branch 1b +@end smallexample + +Which is the equivalent of: + +@smallexample +label_1: branch label_3 +label_2: branch label_1 +label_3: branch label_4 +label_4: branch label_3 +@end smallexample + +Local symbol names are only a notational device. They are immediately +transformed into more conventional symbol names before the assembler uses them. +The symbol names stored in the symbol table, appearing in error messages and +optionally emitted to the object file. The names are constructed using these parts: @table @code @item L -All local labels begin with @samp{L}. Normally both @code{@value{AS}} and +All local labels begin with @samp{L}. Normally both @command{@value{AS}} and @code{@value{LD}} forget symbols that start with @samp{L}. These labels are used for symbols you are never intended to see. If you use the -@samp{-L} option then @code{@value{AS}} retains these symbols in the +@samp{-L} option then @command{@value{AS}} retains these symbols in the object file. If you also instruct @code{@value{LD}} to retain these symbols, you may use them in debugging. -@item @var{digit} -If the label is written @samp{0:} then the digit is @samp{0}. -If the label is written @samp{1:} then the digit is @samp{1}. -And so on up through @samp{9:}. +@item @var{number} +This is the number that was used in the local label definition. So if the +label is written @samp{55:} then the number is @samp{55}. -@item @kbd{C-A} -This unusual character is included so you do not accidentally invent -a symbol of the same name. The character has ASCII value -@samp{\001}. +@item @kbd{C-B} +This unusual character is included so you do not accidentally invent a symbol +of the same name. The character has ASCII value of @samp{\002} (control-B). @item @emph{ordinal number} -This is a serial number to keep the labels distinct. The first -@samp{0:} gets the number @samp{1}; The 15th @samp{0:} gets the -number @samp{15}; @emph{etc.}. Likewise for the other labels @samp{1:} -through @samp{9:}. +This is a serial number to keep the labels distinct. The first definition of +@samp{0:} gets the number @samp{1}. The 15th definition of @samp{0:} gets the +number @samp{15}, and so on. Likewise the first definition of @samp{1:} gets +the number @samp{1} and its 15th defintion gets @samp{15} as well. @end table -For instance, the first @code{1:} is named @code{L1@kbd{C-A}1}, the 44th -@code{3:} is named @code{L3@kbd{C-A}44}. +So for example, the first @code{1:} is named @code{L1@kbd{C-B}1}, the 44th +@code{3:} is named @code{L3@kbd{C-B}44}. + +@subheading Dollar Local Labels +@cindex dollar local symbols + +@code{@value{AS}} also supports an even more local form of local labels called +dollar labels. These labels go out of scope (ie they become undefined) as soon +as a non-local label is defined. Thus they remain valid for only a small +region of the input source code. Normal local labels, by contrast, remain in +scope for the entire file, or until they are redefined by another occurrence of +the same local label. + +Dollar labels are defined in exactly the same way as ordinary local labels, +except that instead of being terminated by a colon, they are terminated by a +dollar sign. eg @samp{@b{55$}}. + +They can also be distinguished from ordinary local labels by their transformed +name which uses ASCII character @samp{\001} (control-A) as the magic character +to distinguish them from ordinary labels. Thus the 5th defintion of @samp{6$} +is named @samp{L6@kbd{C-A}5}. @node Dot @section The Special Dot Symbol @@ -2788,7 +3070,7 @@ For instance, the first @code{1:} is named @code{L1@kbd{C-A}1}, the 44th @cindex current address @cindex location counter The special symbol @samp{.} refers to the current address that -@code{@value{AS}} is assembling into. Thus, the expression @samp{melvin: +@command{@value{AS}} is assembling into. Thus, the expression @samp{melvin: .long .} defines @code{melvin} to contain its own address. Assigning a value to @code{.} is treated the same as a @code{.org} directive. Thus, the expression @samp{.=.+4} is the same as saying @@ -2813,7 +3095,7 @@ attributes. The detailed definitions are in @file{a.out.h}. @end ifset -If you use a symbol without defining it, @code{@value{AS}} assumes zero for +If you use a symbol without defining it, @command{@value{AS}} assumes zero for all these attributes, and probably won't warn you. This makes the symbol an externally defined symbol, which is generally what you would want. @@ -2885,7 +3167,7 @@ format depends on the object-code output format in use. @cindex @code{b.out} symbol attributes @cindex symbol attributes, @code{b.out} -These symbol attributes appear only when @code{@value{AS}} is configured for +These symbol attributes appear only when @command{@value{AS}} is configured for one of the Berkeley-descended object output formats---@code{a.out} or @code{b.out}. @@ -2919,13 +3201,13 @@ one of the Berkeley-descended object output formats---@code{a.out} or This is an arbitrary 16-bit value. You may establish a symbol's descriptor value by using a @code{.desc} statement (@pxref{Desc,,@code{.desc}}). A descriptor value means nothing to -@code{@value{AS}}. +@command{@value{AS}}. @node Symbol Other @subsubsection Other @cindex other attribute, of @code{a.out} symbol -This is an arbitrary 8-bit value. It means nothing to @code{@value{AS}}. +This is an arbitrary 8-bit value. It means nothing to @command{@value{AS}}. @end ifset @ifset COFF @@ -2948,7 +3230,7 @@ respectively, with @code{.val} and @code{.type}. @subsubsection Auxiliary Attributes @cindex auxiliary attributes, COFF symbols -The @code{@value{AS}} directives @code{.dim}, @code{.line}, @code{.scl}, +The @command{@value{AS}} directives @code{.dim}, @code{.line}, @code{.scl}, @code{.size}, and @code{.tag} can generate auxiliary symbol table information for COFF. @end ifset @@ -2979,10 +3261,10 @@ Whitespace may precede and/or follow an expression. The result of an expression must be an absolute number, or else an offset into a particular section. If an expression is not absolute, and there is not -enough information when @code{@value{AS}} sees the expression to know its +enough information when @command{@value{AS}} sees the expression to know its section, a second pass over the source program might be necessary to interpret the expression---but the second pass is currently not implemented. -@code{@value{AS}} aborts with an error message in this situation. +@command{@value{AS}} aborts with an error message in this situation. @menu * Empty Exprs:: Empty Expressions @@ -2996,7 +3278,7 @@ the expression---but the second pass is currently not implemented. @cindex expressions, empty An empty expression has no value: it is just whitespace or null. Wherever an absolute expression is required, you may omit the -expression, and @code{@value{AS}} assumes a value of (absolute) 0. This +expression, and @command{@value{AS}} assumes a value of (absolute) 0. This is compatible with other assemblers. @node Integer Exprs @@ -3036,7 +3318,7 @@ integer. Numbers are usually integers. A number can be a flonum or bignum. In this case, you are warned -that only the low order 32 bits are used, and @code{@value{AS}} pretends +that only the low order 32 bits are used, and @command{@value{AS}} pretends these 32 bits are an integer. You may write integer-manipulating instructions that act on exotic constants, compatible with other assemblers. @@ -3061,7 +3343,7 @@ whitespace. @subsection Prefix Operator @cindex prefix operators -@code{@value{AS}} has the following @dfn{prefix operators}. They each take +@command{@value{AS}} has the following @dfn{prefix operators}. They each take one argument, which must be absolute. @c the tex/end tex stuff surrounding this small table is meant to make @@ -3089,7 +3371,7 @@ one argument, which must be absolute. @cindex operators, permitted arguments @dfn{Infix operators} take two arguments, one on either side. Operators have precedence, but operations with equal precedence are performed left -to right. Apart from @code{+} or @code{-}, both arguments must be +to right. Apart from @code{+} or @option{-}, both arguments must be absolute, and the result is absolute. @enumerate @@ -3274,6 +3556,7 @@ Some machine configurations provide additional directives. * hword:: @code{.hword @var{expressions}} * Ident:: @code{.ident} * If:: @code{.if @var{absolute expression}} +* Incbin:: @code{.incbin "@var{file}"[,@var{skip}[,@var{count}]]} * Include:: @code{.include "@var{file}"} * Int:: @code{.int @var{expressions}} @ifset ELF @@ -3375,7 +3658,7 @@ Some machine configurations provide additional directives. This directive stops the assembly immediately. It is for compatibility with other assemblers. The original idea was that the assembly language source would be piped into the assembler. If the sender -of the source quit, it could use this directive tells @code{@value{AS}} to +of the source quit, it could use this directive tells @command{@value{AS}} to quit also. One day @code{.abort} will not be supported. @ifset COFF @@ -3383,11 +3666,11 @@ quit also. One day @code{.abort} will not be supported. @section @code{.ABORT} @cindex @code{ABORT} directive -When producing COFF output, @code{@value{AS}} accepts this directive as a +When producing COFF output, @command{@value{AS}} accepts this directive as a synonym for @samp{.abort}. @ifset BOUT -When producing @code{b.out} output, @code{@value{AS}} accepts this directive, +When producing @code{b.out} output, @command{@value{AS}} accepts this directive, but ignores it. @end ifset @end ifset @@ -3519,7 +3802,7 @@ example, an alignment of 16 means that the least significant 4 bits of the address should be zero). The alignment must be an absolute expression, and it must be a power of two. If @code{@value{LD}} allocates uninitialized memory for the common symbol, it will use the alignment when placing the symbol. If -no alignment is specified, @code{@value{AS}} will set the alignment to the +no alignment is specified, @command{@value{AS}} will set the alignment to the largest power of two less than or equal to the size of the symbol, up to a maximum of 16. @end ifset @@ -3533,7 +3816,7 @@ The syntax for @code{.comm} differs slightly on the HPPA. The syntax is @section @code{.data @var{subsection}} @cindex @code{data} directive -@code{.data} tells @code{@value{AS}} to assemble the following statements onto the +@code{.data} tells @command{@value{AS}} to assemble the following statements onto the end of the data subsection numbered @var{subsection} (which is an absolute expression). If @var{subsection} is omitted, it defaults to zero. @@ -3549,7 +3832,7 @@ Begin defining debugging information for a symbol @var{name}; the definition extends until the @code{.endef} directive is encountered. @ifset BOUT -This directive is only observed when @code{@value{AS}} is configured for COFF +This directive is only observed when @command{@value{AS}} is configured for COFF format output; when producing @code{b.out}, @samp{.def} is recognized, but ignored. @end ifset @@ -3566,9 +3849,9 @@ This directive sets the descriptor of the symbol (@pxref{Symbol Attributes}) to the low 16 bits of an absolute expression. @ifset COFF -The @samp{.desc} directive is not available when @code{@value{AS}} is +The @samp{.desc} directive is not available when @command{@value{AS}} is configured for COFF output; it is only for @code{a.out} or @code{b.out} -object format. For the sake of compatibility, @code{@value{AS}} accepts +object format. For the sake of compatibility, @command{@value{AS}} accepts it, but produces no output, when configured for COFF. @end ifset @end ifset @@ -3586,7 +3869,7 @@ information in the symbol table. It is only permitted inside @ifset BOUT @samp{.dim} is only meaningful when generating COFF format output; when -@code{@value{AS}} is generating @code{b.out}, it accepts this directive but +@command{@value{AS}} is generating @code{b.out}, it accepts this directive but ignores it. @end ifset @end ifset @@ -3600,7 +3883,7 @@ ignores it. assembles floating point numbers. @ifset GENERIC The exact kind of floating point numbers emitted depends on how -@code{@value{AS}} is configured. @xref{Machine Dependencies}. +@command{@value{AS}} is configured. @xref{Machine Dependencies}. @end ifset @ifclear GENERIC @ifset IEEEFLOAT @@ -3622,7 +3905,7 @@ Force a page break at this point, when generating assembly listings. @section @code{.else} @cindex @code{else} directive -@code{.else} is part of the @code{@value{AS}} support for conditional +@code{.else} is part of the @command{@value{AS}} support for conditional assembly; @pxref{If,,@code{.if}}. It marks the beginning of a section of code to be assembled if the condition for the preceding @code{.if} was false. @@ -3631,7 +3914,7 @@ was false. @section @code{.elseif} @cindex @code{elseif} directive -@code{.elseif} is part of the @code{@value{AS}} support for conditional +@code{.elseif} is part of the @command{@value{AS}} support for conditional assembly; @pxref{If,,@code{.if}}. It is shorthand for beginning a new @code{.if} block that would otherwise fill the entire @code{.else} section. @@ -3639,7 +3922,7 @@ assembly; @pxref{If,,@code{.if}}. It is shorthand for beginning a new @section @code{.end} @cindex @code{end} directive -@code{.end} marks the end of the assembly file. @code{@value{AS}} does not +@code{.end} marks the end of the assembly file. @command{@value{AS}} does not process anything in the file past the @code{.end} directive. @ifset COFF @@ -3652,7 +3935,7 @@ This directive flags the end of a symbol definition begun with @ifset BOUT @samp{.endef} is only meaningful when generating COFF format output; if -@code{@value{AS}} is configured to generate @code{b.out}, it accepts this +@command{@value{AS}} is configured to generate @code{b.out}, it accepts this directive but ignores it. @end ifset @end ifset @@ -3666,7 +3949,7 @@ directive but ignores it. @section @code{.endif} @cindex @code{endif} directive -@code{.endif} is part of the @code{@value{AS}} support for conditional assembly; +@code{.endif} is part of the @command{@value{AS}} support for conditional assembly; it marks the end of a block of code that is only assembled conditionally. @xref{If,,@code{.if}}. @@ -3701,8 +3984,8 @@ Except for the contents of the error message, this is roughly equivalent to @node Err @section @code{.err} @cindex @code{err} directive -If @code{@value{AS}} assembles a @code{.err} directive, it will print an error -message and, unless the @code{-Z} option was used, it will not generate an +If @command{@value{AS}} assembles a @code{.err} directive, it will print an error +message and, unless the @option{-Z} option was used, it will not generate an object file. This can be used to signal error an conditionally compiled code. @node Exitm @@ -3714,7 +3997,7 @@ Exit early from the current macro definition. @xref{Macro}. @cindex @code{extern} directive @code{.extern} is accepted in the source program---for compatibility -with other assemblers---but it is ignored. @code{@value{AS}} treats +with other assemblers---but it is ignored. @command{@value{AS}} treats all undefined symbols as external. @node Fail @@ -3722,8 +4005,8 @@ all undefined symbols as external. @cindex @code{fail} directive Generates an error or a warning. If the value of the @var{expression} is 500 -or more, @code{@value{AS}} will print a warning message. If the value is less -than 500, @code{@value{AS}} will print an error message. The message will +or more, @command{@value{AS}} will print a warning message. If the value is less +than 500, @command{@value{AS}} will print an error message. The message will include the value of @var{expression}. This can occasionally be useful inside complex nested macros or conditional assembly. @@ -3734,14 +4017,14 @@ complex nested macros or conditional assembly. @cindex @code{file} directive @cindex logical file name @cindex file name, logical -@code{.file} tells @code{@value{AS}} that we are about to start a new logical +@code{.file} tells @command{@value{AS}} that we are about to start a new logical file. @var{string} is the new file name. In general, the filename is recognized whether or not it is surrounded by quotes @samp{"}; but if you wish to specify an empty file name, you must give the quotes--@code{""}. This statement may go away in future: it is only recognized to be compatible with -old @code{@value{AS}} programs. +old @command{@value{AS}} programs. @ifset A29K -In some configurations of @code{@value{AS}}, @code{.file} has already been +In some configurations of @command{@value{AS}}, @code{.file} has already been removed to avoid conflicts with other assemblers. @xref{Machine Dependencies}. @end ifset @end ifclear @@ -3752,14 +4035,14 @@ removed to avoid conflicts with other assemblers. @xref{Machine Dependencies}. @cindex @code{fill} directive @cindex writing patterns in memory @cindex patterns, writing in memory -@var{result}, @var{size} and @var{value} are absolute expressions. +@var{repeat}, @var{size} and @var{value} are absolute expressions. This emits @var{repeat} copies of @var{size} bytes. @var{Repeat} may be zero or more. @var{Size} may be zero or more, but if it is more than 8, then it is deemed to have the value 8, compatible with other people's assemblers. The contents of each @var{repeat} bytes is taken from an 8-byte number. The highest order 4 bytes are zero. The lowest order 4 bytes are @var{value} rendered in the -byte-order of an integer on the computer @code{@value{AS}} is assembling for. +byte-order of an integer on the computer @command{@value{AS}} is assembling for. Each @var{size} bytes in a repetition is taken from the lowest order @var{size} bytes of this number. Again, this bizarre behavior is compatible with other people's assemblers. @@ -3778,7 +4061,7 @@ This directive assembles zero or more flonums, separated by commas. It has the same effect as @code{.single}. @ifset GENERIC The exact kind of floating point numbers emitted depends on how -@code{@value{AS}} is configured. +@command{@value{AS}} is configured. @xref{Machine Dependencies}. @end ifset @ifclear GENERIC @@ -3864,7 +4147,7 @@ This directive is a synonym for both @samp{.short} and @samp{.word}. @cindex @code{ident} directive This directive is used by some assemblers to place tags in object files. -@code{@value{AS}} simply accepts the directive for source-file +@command{@value{AS}} simply accepts the directive for source-file compatibility with such assemblers, but does not actually emit anything for it. @@ -3946,6 +4229,22 @@ Like @code{.ifeqs}, but the sense of the test is reversed: this assembles the following section of code if the two strings are not the same. @end table +@node Incbin +@section @code{.incbin "@var{file}"[,@var{skip}[,@var{count}]]} + +@cindex @code{incbin} directive +@cindex binary files, including +The @code{incbin} directive includes @var{file} verbatim at the current +location. You can control the search paths used with the @samp{-I} command-line +option (@pxref{Invoking,,Command-Line Options}). Quotation marks are required +around @var{file}. + +The @var{skip} argument skips a number of bytes from the start of the +@var{file}. The @var{count} argument indicates the maximum number of bytes to +read. Note that the data is not aligned in any way, so it is the user's +responsibility to make sure that proper alignment is provided both before and +after the @code{incbin} directive. + @node Include @section @code{.include "@var{file}"} @@ -4078,7 +4377,7 @@ The syntax for @code{.lcomm} differs slightly on the HPPA. The syntax is @section @code{.lflags} @cindex @code{lflags} directive (ignored) -@code{@value{AS}} accepts this directive, for compatibility with other +@command{@value{AS}} accepts this directive, for compatibility with other assemblers, but ignores it. @ifclear no-line-dir @@ -4099,7 +4398,7 @@ Change the logical line number. @var{line-number} must be an absolute expression. The next line has that logical line number. Therefore any other statements on the current line (after a statement separator character) are reported as on logical line number @var{line-number} @minus{} 1. One day -@code{@value{AS}} will no longer support this directive: it is recognized only +@command{@value{AS}} will no longer support this directive: it is recognized only for compatibility with existing assembler programs. @ifset GENERIC @@ -4112,7 +4411,7 @@ not available; use the synonym @code{.ln} in that context. @ifclear no-line-dir Even though this is a directive associated with the @code{a.out} or -@code{b.out} object-code formats, @code{@value{AS}} still recognizes it +@code{b.out} object-code formats, @command{@value{AS}} still recognizes it when producing COFF output, and treats @samp{.line} as though it were the COFF @samp{.ln} @emph{if} it is found outside a @code{.def}/@code{.endef} pair. @@ -4167,14 +4466,14 @@ Warn if any of the duplicates do not have exactly the same contents. @samp{.ln} is a synonym for @samp{.line}. @end ifclear @ifset no-line-dir -Tell @code{@value{AS}} to change the logical line number. @var{line-number} +Tell @command{@value{AS}} to change the logical line number. @var{line-number} must be an absolute expression. The next line has that logical line number, so any other statements on the current line (after a statement separator character @code{;}) are reported as on logical line number @var{line-number} @minus{} 1. @ifset BOUT -This directive is accepted, but ignored, when @code{@value{AS}} is +This directive is accepted, but ignored, when @command{@value{AS}} is configured for @code{b.out}; its effect is only associated with COFF output format. @end ifset @@ -4185,8 +4484,8 @@ output format. @cindex @code{mri} directive @cindex MRI mode, temporarily -If @var{val} is non-zero, this tells @code{@value{AS}} to enter MRI mode. If -@var{val} is zero, this tells @code{@value{AS}} to exit MRI mode. This change +If @var{val} is non-zero, this tells @command{@value{AS}} to enter MRI mode. If +@var{val} is zero, this tells @command{@value{AS}} to exit MRI mode. This change affects code assembled until the next @code{.mri} directive, or until the end of the file. @xref{M, MRI mode, MRI mode}. @@ -4307,7 +4606,7 @@ Exit early from the current macro definition. @cindex number of macros executed @cindex macros, count executed @item \@@ -@code{@value{AS}} maintains a counter of how many macros it has +@command{@value{AS}} maintains a counter of how many macros it has executed in this pseudo-variable; you can copy that number to your output with @samp{\@@}, but @emph{only within a macro definition}. @@ -4362,7 +4661,7 @@ expression with the same section as the current subsection. That is, you can't use @code{.org} to cross sections: if @var{new-lc} has the wrong section, the @code{.org} directive is ignored. To be compatible with former assemblers, if the section of @var{new-lc} is absolute, -@code{@value{AS}} issues a warning, then pretends the section of @var{new-lc} +@command{@value{AS}} issues a warning, then pretends the section of @var{new-lc} is the same as the current subsection. @code{.org} may only increase the location counter, or leave it @@ -4372,7 +4671,7 @@ backwards. @c double negative used below "not undefined" because this is a specific @c reference to "undefined" (as SEG_UNKNOWN is called in this manual) @c section. doc@cygnus.com 18feb91 -Because @code{@value{AS}} tries to assemble programs in one pass, @var{new-lc} +Because @command{@value{AS}} tries to assemble programs in one pass, @var{new-lc} may not be undefined. If you really detest this restriction we eagerly await a chance to share your improved assembler. @@ -4462,7 +4761,7 @@ stack. @section @code{.print @var{string}} @cindex @code{print} directive -@code{@value{AS}} will print @var{string} on the standard output during +@command{@value{AS}} will print @var{string} on the standard output during assembly. You must put @var{string} in double quotes. @ifset ELF @@ -4495,7 +4794,7 @@ If you do not use @code{.psize}, listings use a default line-count of 60. You may omit the comma and @var{columns} specification; the default width is 200 columns. -@code{@value{AS}} generates formfeeds whenever the specified number of +@command{@value{AS}} generates formfeeds whenever the specified number of lines is exceeded (or whenever you explicitly request one, using @code{.eject}). @@ -4596,7 +4895,7 @@ symbolic debugging information. @ifset BOUT The @samp{.scl} directive is primarily associated with COFF output; when -configured to generate @code{b.out} output format, @code{@value{AS}} +configured to generate @code{b.out} output format, @command{@value{AS}} accepts this directive but ignores it. @end ifset @end ifset @@ -4642,7 +4941,9 @@ shared section (meaningful for PE targets) If no flags are specified, the default flags depend upon the section name. If the section name is not recognized, the default will be for the section to be -loaded and writable. +loaded and writable. Note the @code{n} and @code{w} flags remove attributes +from the section, rather than adding them, so if they are used on their own it +will be as if no flags had been specified at all. If the optional argument to the @code{.section} directive is not quoted, it is taken as a subsegment number (@pxref{Sub-Sections}). @@ -4663,7 +4964,7 @@ This is one of the ELF section stack manipulation directives. The others are For ELF targets, the @code{.section} directive is used like this: @smallexample -.section @var{name} [, "@var{flags}"[, @@@var{type}]] +.section @var{name} [, "@var{flags}"[, @@@var{type}[, @@@var{entsize}]]] @end smallexample The optional @var{flags} argument is a quoted string which may contain any @@ -4675,6 +4976,10 @@ section is allocatable section is writable @item x section is executable +@item M +section is mergeable +@item S +section contains zero terminated strings @end table The optional @var{type} argument may contain one of the following constants: @@ -4685,6 +4990,13 @@ section contains data section does not contain data (i.e., section only occupies space) @end table +If @var{flags} contains @code{M} flag, @var{type} argument must be specified +as well as @var{entsize} argument. Sections with @code{M} flag but not +@code{S} flag must contain fixed size constants, each @var{entsize} octets +long. Sections with both @code{M} and @code{S} must contain zero terminated +strings where each character is @var{entsize} bytes long. The linker may remove +duplicates within sections with the same name, same entity size and same flags. + If no flags are specified, the default flags depend upon the section name. If the section name is not recognized, the default will be for the section to have none of the above flags: it will not be allocated in memory, nor writable, nor @@ -4763,7 +5075,7 @@ This directive assembles zero or more flonums, separated by commas. It has the same effect as @code{.float}. @ifset GENERIC The exact kind of floating point numbers emitted depends on how -@code{@value{AS}} is configured. @xref{Machine Dependencies}. +@command{@value{AS}} is configured. @xref{Machine Dependencies}. @end ifset @ifclear GENERIC @ifset IEEEFLOAT @@ -4782,7 +5094,7 @@ information in the symbol table. It is only permitted inside @ifset BOUT @samp{.size} is only meaningful when generating COFF format output; when -@code{@value{AS}} is generating @code{b.out}, it accepts this directive but +@command{@value{AS}} is generating @code{b.out}, it accepts this directive but ignores it. @end ifset @@ -4857,7 +5169,7 @@ compatibility with other AMD 29K assemblers. @cindex @code{stab@var{x}} directives There are three directives that begin @samp{.stab}. All emit symbols (@pxref{Symbols}), for use by symbolic debuggers. -The symbols are not entered in the @code{@value{AS}} hash table: they +The symbols are not entered in the @command{@value{AS}} hash table: they cannot be referenced elsewhere in the source file. Up to five fields are required: @@ -5032,7 +5344,7 @@ definitions in the symbol table with instances of those structures. @ifset BOUT @samp{.tag} is only used when generating COFF format output; when -@code{@value{AS}} is generating @code{b.out}, it accepts this directive but +@command{@value{AS}} is generating @code{b.out}, it accepts this directive but ignores it. @end ifset @end ifset @@ -5041,7 +5353,7 @@ ignores it. @section @code{.text @var{subsection}} @cindex @code{text} directive -Tells @code{@value{AS}} to assemble the following statements onto the end of +Tells @command{@value{AS}} to assemble the following statements onto the end of the text subsection numbered @var{subsection}, which is an absolute expression. If @var{subsection} is omitted, subsection number zero is used. @@ -5068,7 +5380,7 @@ records the integer @var{int} as the type attribute of a symbol table entry. @ifset BOUT @samp{.type} is associated only with COFF format output; when -@code{@value{AS}} is configured for @code{b.out} output, it accepts this +@command{@value{AS}} is configured for @code{b.out} output, it accepts this directive but ignores it. @end ifset @@ -5119,7 +5431,7 @@ records the address @var{addr} as the value attribute of a symbol table entry. @ifset BOUT -@samp{.val} is used only for COFF output; when @code{@value{AS}} is +@samp{.val} is used only for COFF output; when @command{@value{AS}} is configured for @code{b.out}, it accepts this directive but ignores it. @end ifset @end ifset @@ -5168,10 +5480,10 @@ This directive expects zero or more @var{expressions}, of any section, separated by commas. @ifclear GENERIC @ifset W32 -For each expression, @code{@value{AS}} emits a 32-bit number. +For each expression, @command{@value{AS}} emits a 32-bit number. @end ifset @ifset W16 -For each expression, @code{@value{AS}} emits a 16-bit number. +For each expression, @command{@value{AS}} emits a 16-bit number. @end ifset @end ifclear @ifset GENERIC @@ -5197,11 +5509,11 @@ interest to you does 32-bit addressing (or doesn't require it; @end ifset In order to assemble compiler output into something that works, -@code{@value{AS}} occasionally does strange things to @samp{.word} directives. +@command{@value{AS}} occasionally does strange things to @samp{.word} directives. Directives of the form @samp{.word sym1-sym2} are often emitted by -compilers as part of jump tables. Therefore, when @code{@value{AS}} assembles a +compilers as part of jump tables. Therefore, when @command{@value{AS}} assembles a directive of the form @samp{.word sym1-sym2}, and the difference between -@code{sym1} and @code{sym2} does not fit in 16 bits, @code{@value{AS}} +@code{sym1} and @code{sym2} does not fit in 16 bits, @command{@value{AS}} creates a @dfn{secondary jump table}, immediately before the next label. This secondary jump table is preceded by a short-jump to the first byte after the secondary table. This short-jump prevents the flow @@ -5219,7 +5531,7 @@ minus the address of the long-jump to @code{sym4}; and so on, for as many entries in the original jump table as necessary. @ifset INTERNALS -@emph{This feature may be disabled by compiling @code{@value{AS}} with the +@emph{This feature may be disabled by compiling @command{@value{AS}} with the @samp{-DWORKING_DOT_WORD} option.} This feature is likely to confuse assembly language programmers. @end ifset @@ -5244,11 +5556,11 @@ They are included for compatibility with older assemblers. @cindex machine dependencies The machine instruction sets are (almost by definition) different on -each machine where @code{@value{AS}} runs. Floating point representations -vary as well, and @code{@value{AS}} often supports a few additional +each machine where @command{@value{AS}} runs. Floating point representations +vary as well, and @command{@value{AS}} often supports a few additional directives or command-line options for compatibility with other assemblers on a particular platform. Finally, some versions of -@code{@value{AS}} support special pseudo-instructions for branch +@command{@value{AS}} support special pseudo-instructions for branch optimization. This chapter discusses most of these differences, though it does not @@ -5301,15 +5613,27 @@ subject, see the hardware manufacturer's manual. @ifset M68HC11 * M68HC11-Dependent:: M68HC11 and 68HC12 Dependent Features @end ifset +@ifset M880X0 +* M88K-Dependent:: M880x0 Dependent Features +@end ifset @ifset MIPS * MIPS-Dependent:: MIPS Dependent Features @end ifset +@ifset MMIX +* MMIX-Dependent:: MMIX Dependent Features +@end ifset @ifset SH * SH-Dependent:: Hitachi SH Dependent Features @end ifset +@ifset PDP11 +* PDP-11-Dependent:: PDP-11 Dependent Features +@end ifset @ifset PJ * PJ-Dependent:: picoJava Dependent Features @end ifset +@ifset PPC +* PPC-Dependent:: PowerPC Dependent Features +@end ifset @ifset SPARC * Sparc-Dependent:: SPARC Dependent Features @end ifset @@ -5357,7 +5681,7 @@ subject, see the hardware manufacturer's manual. The machine instruction sets are different on each Hitachi chip family, and there are also some syntax differences among the families. This -chapter describes the specific @code{@value{AS}} features for each +chapter describes the specific @command{@value{AS}} features for each family. @menu @@ -5417,18 +5741,34 @@ family. @include c-m68hc11.texi @end ifset +@ifset M880X0 +@include c-m88k.texi +@end ifset + @ifset MIPS @include c-mips.texi @end ifset +@ifset MMIX +@include c-mmix.texi +@end ifset + @ifset NS32K @include c-ns32k.texi @end ifset +@ifset PDP11 +@include c-pdp11.texi +@end ifset + @ifset PJ @include c-pj.texi @end ifset +@ifset PPC +@include c-ppc.texi +@end ifset + @ifset SH @include c-sh.texi @end ifset @@ -5463,12 +5803,12 @@ family. @cindex bugs in assembler @cindex reporting bugs in assembler -Your bug reports play an essential role in making @code{@value{AS}} reliable. +Your bug reports play an essential role in making @command{@value{AS}} reliable. Reporting a bug may help you by bringing a solution to your problem, or it may not. But in any case the principal function of a bug report is to help the -entire community by making the next version of @code{@value{AS}} work better. -Bug reports are your contribution to the maintenance of @code{@value{AS}}. +entire community by making the next version of @command{@value{AS}} work better. +Bug reports are your contribution to the maintenance of @command{@value{AS}}. In order for a bug report to serve its purpose, you must include the information that enables us to fix the bug. @@ -5490,21 +5830,21 @@ If you are not sure whether you have found a bug, here are some guidelines: @cindex crash of assembler @item If the assembler gets a fatal signal, for any input whatever, that is a -@code{@value{AS}} bug. Reliable assemblers never crash. +@command{@value{AS}} bug. Reliable assemblers never crash. @cindex error on valid input @item -If @code{@value{AS}} produces an error message for valid input, that is a bug. +If @command{@value{AS}} produces an error message for valid input, that is a bug. @cindex invalid input @item -If @code{@value{AS}} does not produce an error message for invalid input, that +If @command{@value{AS}} does not produce an error message for invalid input, that is a bug. However, you should note that your idea of ``invalid input'' might be our idea of ``an extension'' or ``support for traditional practice''. @item If you are an experienced user of assemblers, your suggestions for improvement -of @code{@value{AS}} are welcome in any case. +of @command{@value{AS}} are welcome in any case. @end itemize @node Bug Reporting @@ -5513,14 +5853,14 @@ of @code{@value{AS}} are welcome in any case. @cindex assembler bugs, reporting A number of companies and individuals offer support for @sc{gnu} products. If -you obtained @code{@value{AS}} from a support organization, we recommend you +you obtained @command{@value{AS}} from a support organization, we recommend you contact that organization first. You can find contact information for many support companies and individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs distribution. -In any event, we also recommend that you send bug reports for @code{@value{AS}} +In any event, we also recommend that you send bug reports for @command{@value{AS}} to @samp{bug-binutils@@gnu.org}. The fundamental principle of reporting bugs usefully is this: @@ -5550,21 +5890,21 @@ To enable us to fix the bug, you should include all these things: @itemize @bullet @item -The version of @code{@value{AS}}. @code{@value{AS}} announces it if you start +The version of @command{@value{AS}}. @command{@value{AS}} announces it if you start it with the @samp{--version} argument. Without this, we will not know whether there is any point in looking for -the bug in the current version of @code{@value{AS}}. +the bug in the current version of @command{@value{AS}}. @item -Any patches you may have applied to the @code{@value{AS}} source. +Any patches you may have applied to the @command{@value{AS}} source. @item The type of machine you are using, and the operating system name and version number. @item -What compiler (and its version) was used to compile @code{@value{AS}}---e.g. +What compiler (and its version) was used to compile @command{@value{AS}}---e.g. ``@code{gcc-2.7}''. @item @@ -5582,20 +5922,20 @@ high level language source. Most compilers will produce the assembler source when run with the @samp{-S} option. If you are using @code{@value{GCC}}, use the options @samp{-v --save-temps}; this will save the assembler source in a file with an extension of @file{.s}, and also show you exactly how -@code{@value{AS}} is being run. +@command{@value{AS}} is being run. @item A description of what behavior you observe that you believe is incorrect. For example, ``It gets a fatal signal.'' -Of course, if the bug is that @code{@value{AS}} gets a fatal signal, then we +Of course, if the bug is that @command{@value{AS}} gets a fatal signal, then we will certainly notice it. But if the bug is incorrect output, we might not notice unless it is glaringly wrong. You might as well not give us a chance to make a mistake. Even if the problem you experience is a fatal signal, you should still say so explicitly. Suppose something strange is going on, such as, your copy of -@code{@value{AS}} is out of synch, or you have encountered a bug in the C +@command{@value{AS}} is out of synch, or you have encountered a bug in the C library on your system. (This has happened!) Your copy might crash and ours would not. If you told us to expect a crash, then when ours fails to crash, we would know that the bug was not happening for us. If you had not told us to @@ -5603,10 +5943,10 @@ expect a crash, then we would not be able to draw any conclusion from our observations. @item -If you wish to suggest changes to the @code{@value{AS}} source, send us context +If you wish to suggest changes to the @command{@value{AS}} source, send us context diffs, as generated by @code{diff} with the @samp{-u}, @samp{-c}, or @samp{-p} option. Always send diffs from the old file to the new file. If you even -discuss something in the @code{@value{AS}} source, refer to it by context, not +discuss something in the @command{@value{AS}} source, refer to it by context, not by line number. The line numbers in our development sources will not match those in your @@ -5644,7 +5984,7 @@ the necessary information, such as the test case, on the assumption that a patch is all we need. We might see problems with your patch and decide to fix the problem another way, or we might not understand it at all. -Sometimes with a program as complicated as @code{@value{AS}} it is very hard to +Sometimes with a program as complicated as @command{@value{AS}} it is very hard to construct an example that will make the program follow a certain path through the code. If you do not send us the example, we will not be able to construct one, so we will not be able to verify that the bug is fixed. @@ -5663,7 +6003,7 @@ things without first using the debugger to find the facts. @node Acknowledgements @chapter Acknowledgements -If you have contributed to @code{@value{AS}} and your name isn't listed here, +If you have contributed to @command{@value{AS}} and your name isn't listed here, it is not meant as a slight. We just don't know about it. Send mail to the maintainer, and we'll correct the situation. Currently @c (January 1994), @@ -5724,7 +6064,7 @@ Ian Lance Taylor of Cygnus Support merged the Motorola and MIT syntax for the added support for MIPS ECOFF and ELF targets, wrote the initial RS/6000 and PowerPC assembler, and made a few other minor patches. -Steve Chamberlain made @code{@value{AS}} able to generate listings. +Steve Chamberlain made @command{@value{AS}} able to generate listings. Hewlett-Packard contributed support for the HP9000/300. diff --git a/contrib/binutils/gas/doc/c-arm.texi b/contrib/binutils/gas/doc/c-arm.texi index 2c67222..022faa0 100644 --- a/contrib/binutils/gas/doc/c-arm.texi +++ b/contrib/binutils/gas/doc/c-arm.texi @@ -31,41 +31,149 @@ @table @code -@cindex @code{-marm} command line option, ARM -@item -marm@code{[2|250|3|6|60|600|610|620|7|7m|7d|7dm|7di|7dmi|70|700|700i|710|710c|7100|7500|7500fe|7tdmi|8|810|9|9tdmi|920|strongarm|strongarm110|strongarm1100]} -@itemx -mxscale +@cindex @code{-mcpu=} command line option, ARM +@item -mcpu=@var{processor}[+@var{extension}@dots{}] This option specifies the target processor. The assembler will issue an error message if an attempt is made to assemble an instruction which -will not execute on the target processor. - -@cindex @code{-marmv} command line option, ARM -@item -marmv@code{[2|2a|3|3m|4|4t|5|5t|5te]} +will not execute on the target processor. The following processor names are +recognized: +@code{arm1}, +@code{arm2}, +@code{arm250}, +@code{arm3}, +@code{arm6}, +@code{arm60}, +@code{arm600}, +@code{arm610}, +@code{arm620}, +@code{arm7}, +@code{arm7m}, +@code{arm7d}, +@code{arm7dm}, +@code{arm7di}, +@code{arm7dmi}, +@code{arm70}, +@code{arm700}, +@code{arm700i}, +@code{arm710}, +@code{arm710t}, +@code{arm720}, +@code{arm720t}, +@code{arm740t}, +@code{arm710c}, +@code{arm7100}, +@code{arm7500}, +@code{arm7500fe}, +@code{arm7t}, +@code{arm7tdmi}, +@code{arm8}, +@code{arm810}, +@code{strongarm}, +@code{strongarm1}, +@code{strongarm110}, +@code{strongarm1100}, +@code{strongarm1110}, +@code{arm9}, +@code{arm920}, +@code{arm920t}, +@code{arm922t}, +@code{arm940t}, +@code{arm9tdmi}, +@code{arm9e}, +@code{arm946e-r0}, +@code{arm946e}, +@code{arm966e-r0}, +@code{arm966e}, +@code{arm10t}, +@code{arm10e}, +@code{arm1020}, +@code{arm1020t}, +@code{arm1020e}, +@code{ep9312} (ARM920 with Cirrus Maverick coprocessor), +@code{i80200} (Intel XScale processor) +and +@code{xscale}. +The special name @code{all} may be used to allow the +assembler to accept instructions valid for any ARM processor. + +In addition to the basic instruction set, the assembler can be told to +accept various extension mnemonics that extend the processor using the +co-processor instruction space. For example, @code{-mcpu=arm920+maverick} +is equivalent to specifying @code{-mcpu=ep9312}. The following extensions +are currently supported: +@code{+maverick} +and +@code{+xscale}. + +@cindex @code{-march=} command line option, ARM +@item -march=@var{architecture}[+@var{extension}@dots{}] This option specifies the target architecture. The assembler will issue an error message if an attempt is made to assemble an instruction which -will not execute on the target architecture. -The option @code{-marmv5te} specifies that v5t architecture should be -used with the El Segundo extensions enabled. +will not execute on the target architecture. The following architecture +names are recognized: +@code{armv1}, +@code{armv2}, +@code{armv2a}, +@code{armv2s}, +@code{armv3}, +@code{armv3m}, +@code{armv4}, +@code{armv4xm}, +@code{armv4t}, +@code{armv4txm}, +@code{armv5}, +@code{armv5t}, +@code{armv5txm}, +@code{armv5te}, +@code{armv5texp} +and +@code{xscale}. +If both @code{-mcpu} and +@code{-march} are specified, the assembler will use +the setting for @code{-mcpu}. + +The architecture option can be extended with the same instruction set +extension options as the @code{-mcpu} option. + +@cindex @code{-mfpu=} command line option, ARM +@item -mfpu=@var{floating-point-format} + +This option specifies the floating point format to assemble for. The +assembler will issue an error message if an attempt is made to assemble +an instruction which will not execute on the target floating point unit. +The following format options are recognized: +@code{softfpa}, +@code{fpe}, +@code{fpe2}, +@code{fpe3}, +@code{fpa}, +@code{fpa10}, +@code{fpa11}, +@code{arm7500fe}, +@code{softvfp}, +@code{softvfp+vfp}, +@code{vfp}, +@code{vfp10}, +@code{vfp10-r0}, +@code{vfp9}, +@code{vfpxd}, +@code{arm1020t} +and +@code{arm1020e}. + +In addition to determining which instructions are assembled, this option +also affects the way in which the @code{.double} assembler directive behaves +when assembling little-endian code. + +The default is dependent on the processor selected. For Architecture 5 or +later, the default is to assembler for VFP instructions; for earlier +architectures the default is to assemble for FPA instructions. @cindex @code{-mthumb} command line option, ARM @item -mthumb -This option specifies that only Thumb instructions should be assembled. - -@cindex @code{-mall} command line option, ARM -@item -mall -This option specifies that any Arm or Thumb instruction should be assembled. - -@cindex @code{-mfpa} command line option, ARM -@item -mfpa @code{[10|11]} -This option specifies the floating point architecture in use on the -target processor. - -@cindex @code{-mfpe-old} command line option, ARM -@item -mfpe-old -Do not allow the assembly of floating point multiple instructions. - -@cindex @code{-mno-fpu} command line option, ARM -@item -mno-fpu -Do not allow the assembly of any floating point instructions. +This option specifies that the assembler should start assembling Thumb +instructions; that is, it should behave as though the file starts with a +@code{.code 16} directive. @cindex @code{-mthumb-interwork} command line option, ARM @item -mthumb-interwork diff --git a/contrib/binutils/gas/doc/c-ppc.texi b/contrib/binutils/gas/doc/c-ppc.texi new file mode 100644 index 0000000..cae9e23 --- /dev/null +++ b/contrib/binutils/gas/doc/c-ppc.texi @@ -0,0 +1,95 @@ +@c Copyright 2001 +@c Free Software Foundation, Inc. +@c This is part of the GAS manual. +@c For copying conditions, see the file as.texinfo. +@ifset GENERIC +@page +@node PPC-Dependent +@chapter PowerPC Dependent Features +@end ifset +@ifclear GENERIC +@node Machine Dependencies +@chapter PowerPC Dependent Features +@end ifclear + +@cindex PowerPC support +@menu +* PowerPC-Opts:: Options +@end menu + +@node PowerPC-Opts +@section Options + +@cindex options for PowerPC +@cindex PowerPC options +@cindex architectures, PowerPC +@cindex PowerPC architectures +The PowerPC chip family includes several successive levels, using the same +core instruction set, but including a few additional instructions at +each level. There are exceptions to this however. For details on what +instructions each variant supports, please see the chip's architecture +reference manual. + +The following table lists all available PowerPC options. + +@table @code +@item -mpwrx | -mpwr2 +Generate code for IBM POWER/2 (RIOS2). + +@item -mpwr +Generate code for IBM POWER (RIOS1) + +@item -m601 +Generate code for Motorola PowerPC 601. + +@item -mppc, -mppc32, -m603, -m604 +Generate code for Motorola PowerPC 603/604. + +@item -m403, -m405 +Generate code for Motorola PowerPC 403/405. + +@item -mppc64, -m620 +Generate code for Motorola PowerPC 620. + +@item -mppc64bridge +Generate code for PowerPC 64, including bridge insns. + +@item -mbooke64 +Generate code for 64-bit Motorola BookE. + +@item -mbooke, mbooke32 +Generate code for 32-bit Motorola BookE. + +@item -mcom +Generate code Power/PowerPC common instructions. + +@item -many +Generate code for any architecture (PWR/PWRX/PPC). + +@item -mregnames +Allow symbolic names for registers. + +@item -mno-regnames +Do not allow symbolic names for registers. + +@item -mrelocatable +Support for GCC's -mrelocatble option. + +@item -mrelocatable-lib +Support for GCC's -mrelocatble-lib option. + +@item -memb +Set PPC_EMB bit in ELF flags. + +@item -mlittle, -mlittle-endian +Generate code for a little endian machine. + +@item -mbig, -mbig-endian +Generate code for a big endian machine. + +@item -msolaris +Generate code for Solaris. + +@item -mno-solaris +Do not generate code for Solaris. +@end table diff --git a/contrib/binutils/gas/doc/internals.texi b/contrib/binutils/gas/doc/internals.texi index eebb9bb..e7d3009 100644 --- a/contrib/binutils/gas/doc/internals.texi +++ b/contrib/binutils/gas/doc/internals.texi @@ -130,11 +130,12 @@ Symbol structures contain the following fields: @item sy_value This is an @code{expressionS} that describes the value of the symbol. It might refer to one or more other symbols; if so, its true value may not be known -until @code{resolve_symbol_value} is called in @code{write_object_file}. +until @code{resolve_symbol_value} is called with @var{finalize_syms} non-zero +in @code{write_object_file}. The expression is often simply a constant. Before @code{resolve_symbol_value} -is called, the value is the offset from the frag (@pxref{Frags}). Afterward, -the frag address has been added in. +is called with @var{finalize_syms} set, the value is the offset from the frag +(@pxref{Frags}). Afterward, the frag address has been added in. @item sy_resolved This field is non-zero if the symbol's value has been completely resolved. It @@ -208,9 +209,7 @@ Set the symbol's value. @item S_GET_VALUE @cindex S_GET_VALUE Get the symbol's value. This will cause @code{resolve_symbol_value} to be -called if necessary, so @code{S_GET_VALUE} should only be called when it is -safe to resolve symbols (i.e., after the entire input file has been read and -all symbols have been defined). +called if necessary. @item S_SET_SEGMENT @cindex S_SET_SEGMENT @@ -513,7 +512,7 @@ A number which is added into the fixup. @item fx_addnumber Some CPU backends use this field to convey information between -@code{md_apply_fix} and @code{tc_gen_reloc}. The machine independent code does +@code{md_apply_fix3} and @code{tc_gen_reloc}. The machine independent code does not use it. @item fx_next @@ -844,11 +843,13 @@ zero if the target is little endian. @itemx md_longopts_size @itemx md_parse_option @itemx md_show_usage +@itemx md_after_parse_args @cindex md_shortopts @cindex md_longopts @cindex md_longopts_size @cindex md_parse_option @cindex md_show_usage +@cindex md_after_parse_args GAS uses these variables and functions during option processing. @code{md_shortopts} is a @code{const char *} which GAS adds to the machine independent string passed to @code{getopt}. @code{md_longopts} is a @@ -860,6 +861,9 @@ GAS will call @code{md_parse_option} whenever @code{getopt} returns an unrecognized code, presumably indicating a special code value which appears in @code{md_longopts}. GAS will call @code{md_show_usage} when a usage message is printed; it should print a description of the machine specific options. +@code{md_after_pase_args}, if defined, is called after all options are +processed, to let the backend override settings done by the generic option +parsing. @item md_begin @cindex md_begin @@ -1131,6 +1135,22 @@ the MIPS which support options to change the endianness, which function to call is a runtime decision. On other targets, @code{md_number_to_chars} can be a simple macro. +@item md_atof (@var{type},@var{litP},@var{sizeP}) +@cindex md_atof +This function is called to convert an ASCII string into a floating point value +in format used by the CPU. It takes three arguments. The first is @var{type} +which is a byte describing the type of floating point number to be created. +Possible values are @var{'f'} or @var{'s'} for single precision, @var{'d'} or +@var{'r'} for double precision and @var{'x'} or @var{'p'} for extended +precision. Either lower or upper case versions of these letters can be used. + +The second parameter is @var{litP} which is a pointer to a byte array where the +converted value should be stored. The third argument is @var{sizeP}, which is +a pointer to a integer that should be filled in with the number of +@var{LITTLENUM}s emitted into the byte array. (@var{LITTLENUM} is defined in +gas/bignum.h). The function should return NULL upon success or an error string +upon failure. + @item md_reloc_size @cindex md_reloc_size This variable is only used in the original version of gas (not @@ -1209,17 +1229,28 @@ The instruction is completed using the data from the relaxation pass. It may also create any necessary relocations. @xref{Relaxation}. -@item md_apply_fix -@cindex md_apply_fix +@item TC_FINALIZE_SYMS_BEFORE_SIZE_SEG +@cindex TC_FINALIZE_SYMS_BEFORE_SIZE_SEG +Specifies the value to be assigned to @code{finalize_syms} before the function +@code{size_segs} is called. Since @code{size_segs} calls @code{cvt_frag_to_fill} +which can call @code{md_convert_frag}, this constant governs whether the symbols +accessed in @code{md_convert_frag} will be fully resolved. In particular it +governs whether local symbols will have been resolved, and had their frag +information removed. Depending upon the processing performed by +@code{md_convert_frag} the frag information may or may not be necessary, as may +the resolved values of the symbols. The default value is 1. + +@item md_apply_fix3 +@cindex md_apply_fix3 GAS will call this for each fixup. It should store the correct value in the object file. @code{fixup_segment} performs a generic overflow check on the -@code{valueT *val} argument after @code{md_apply_fix} returns. If the overflow -check is relevant for the target machine, then @code{md_apply_fix} should +@code{valueT *val} argument after @code{md_apply_fix3} returns. If the overflow +check is relevant for the target machine, then @code{md_apply_fix3} should modify @code{valueT *val}, typically to the value stored in the object file. @item TC_HANDLES_FX_DONE @cindex TC_HANDLES_FX_DONE -If this macro is defined, it means that @code{md_apply_fix} correctly sets the +If this macro is defined, it means that @code{md_apply_fix3} correctly sets the @code{fx_done} field in the fixup. @item tc_gen_reloc @@ -1248,12 +1279,14 @@ You may define this macro to indicate whether a fixup against a locally defined symbol should be adjusted to be against the section symbol. It should return a non-zero value if the adjustment is acceptable. -@item MD_PCREL_FROM_SECTION +@item MD_PCREL_FROM_SECTION (@var{fixp}, @var{section}) @cindex MD_PCREL_FROM_SECTION -If you define this macro, it should return the offset between the address of a -PC relative fixup and the position from which the PC relative adjustment should -be made. On many processors, the base of a PC relative instruction is the next -instruction, so this macro would return the length of an instruction. +If you define this macro, it should return the position from which the PC +relative adjustment for a PC relative fixup should be made. On many +processors, the base of a PC relative instruction is the next instruction, +so this macro would return the length of an instruction, plus the address of +the PC relative fixup. The latter can be calculated as +@var{fixp}->fx_where + @var{fixp}->fx_frag->fr_address . @item md_pcrel_from @cindex md_pcrel_from diff --git a/contrib/binutils/gas/dwarf2dbg.c b/contrib/binutils/gas/dwarf2dbg.c index ea76069..6e62206 100644 --- a/contrib/binutils/gas/dwarf2dbg.c +++ b/contrib/binutils/gas/dwarf2dbg.c @@ -230,11 +230,20 @@ dwarf2_gen_line_info (ofs, loc) { struct line_subseg *ss; struct line_entry *e; + static unsigned int line = -1; + static unsigned int filenum = -1; /* Early out for as-yet incomplete location information. */ if (loc->filenum == 0 || loc->line == 0) return; + /* Don't emit sequences of line symbols for the same line. */ + if (line == loc->line && filenum == loc->filenum) + return; + + line = loc->line; + filenum = loc->filenum; + e = (struct line_entry *) xmalloc (sizeof (*e)); e->next = NULL; e->frag = frag_now; @@ -341,13 +350,13 @@ dwarf2_directive_file (dummy) if (num < 1) { - as_bad (_("File number less than one")); + as_bad (_("file number less than one")); return; } - if (num < files_in_use && files[num].filename != 0) + if (num < (int) files_in_use && files[num].filename != 0) { - as_bad (_("File number %ld already allocated"), (long) num); + as_bad (_("file number %ld already allocated"), (long) num); return; } @@ -383,12 +392,12 @@ dwarf2_directive_loc (dummy) if (filenum < 1) { - as_bad (_("File number less than one")); + as_bad (_("file number less than one")); return; } if (filenum >= (int) files_in_use || files[filenum].filename == 0) { - as_bad (_("Unassigned file number %ld"), (long) filenum); + as_bad (_("unassigned file number %ld"), (long) filenum); return; } @@ -524,8 +533,9 @@ get_frag_fix (frag) for (fr = frchain_root; fr; fr = fr->frch_next) if (fr->frch_last == frag) { - return ((char *) obstack_next_free (&fr->frch_obstack) - - frag->fr_literal); + long align_mask = -1 << get_recorded_alignment (fr->frch_seg); + return (((char *) obstack_next_free (&fr->frch_obstack) + - frag->fr_literal) + ~align_mask) & align_mask; } abort (); @@ -772,7 +782,7 @@ dwarf2dbg_estimate_size_before_relax (frag) offsetT addr_delta; int size; - addr_delta = resolve_symbol_value (frag->fr_symbol, 0); + addr_delta = resolve_symbol_value (frag->fr_symbol); size = size_inc_line_addr (frag->fr_offset, addr_delta); frag->fr_subtype = size; @@ -806,7 +816,7 @@ dwarf2dbg_convert_frag (frag) { offsetT addr_diff; - addr_diff = resolve_symbol_value (frag->fr_symbol, 1); + addr_diff = resolve_symbol_value (frag->fr_symbol); /* fr_var carries the max_chars that we created the fragment with. fr_subtype carries the current expected length. We must, of @@ -933,7 +943,7 @@ out_file_list () { if (files[i].filename == NULL) { - as_bad (_("Unassigned file number %u"), i); + as_bad (_("unassigned file number %ld"), (long) i); continue; } @@ -1212,7 +1222,7 @@ dwarf2_finish () struct line_seg *s; /* If no debug information was recorded, nothing to do. */ - if (all_segs == NULL) + if (all_segs == NULL && files_in_use <= 1) return; /* Calculate the size of an address for the target machine. */ @@ -1239,7 +1249,7 @@ dwarf2_finish () /* If this is assembler generated line info, we need .debug_info and .debug_abbrev sections as well. */ - if (debug_type == DEBUG_DWARF2) + if (all_segs != NULL && debug_type == DEBUG_DWARF2) { segT abbrev_seg; segT info_seg; diff --git a/contrib/binutils/gas/ecoff.c b/contrib/binutils/gas/ecoff.c index cc94bf6..ed11921 100644 --- a/contrib/binutils/gas/ecoff.c +++ b/contrib/binutils/gas/ecoff.c @@ -37,7 +37,7 @@ #include "coff/symconst.h" #include "aout/stab_gnu.h" -#include <ctype.h> +#include "safe-ctype.h" /* Why isn't this in coff/sym.h? */ #define ST_RFDESCAPE 0xfff @@ -1553,7 +1553,7 @@ add_string (vp, hash_tbl, str, ret_hash) register shash_t *hash_ptr; if (len >= PAGE_USIZE) - as_fatal (_("String too big (%lu bytes)"), len); + as_fatal (_("string too big (%lu bytes)"), len); hash_ptr = (shash_t *) hash_find (hash_tbl, str); if (hash_ptr == (shash_t *) NULL) @@ -1579,7 +1579,7 @@ add_string (vp, hash_tbl, str, ret_hash) err = hash_insert (hash_tbl, str, (char *) hash_ptr); if (err) - as_fatal (_("Inserting \"%s\" into string hash table: %s"), + as_fatal (_("inserting \"%s\" into string hash table: %s"), str, err); } @@ -2042,7 +2042,7 @@ get_tag (tag, sym, basic_type) hash_ptr = allocate_shash (); err = hash_insert (tag_hash, perm, (char *) hash_ptr); if (err) - as_fatal (_("Inserting \"%s\" into tag hash table: %s"), + as_fatal (_("inserting \"%s\" into tag hash table: %s"), tag, err); hash_ptr->string = perm; } @@ -2298,7 +2298,7 @@ add_file (file_name, indx, fake) (shash_t **)0); if (strlen (file_name) > PAGE_USIZE - 2) - as_fatal (_("Filename goes over one page boundary.")); + as_fatal (_("filename goes over one page boundary")); /* Push the start of the filename. We assume that the filename will be stored at string offset 1. */ @@ -2538,7 +2538,7 @@ ecoff_directive_def (ignore) if (coff_sym_name != (char *) NULL) as_warn (_(".def pseudo-op used inside of .def/.endef; ignored")); else if (*name == '\0') - as_warn (_("Empty symbol name in .def; ignored")); + as_warn (_("empty symbol name in .def; ignored")); else { if (coff_sym_name != (char *) NULL) @@ -2591,7 +2591,7 @@ ecoff_directive_dim (ignore) { if (*input_line_pointer != '\n' && *input_line_pointer != ';') - as_warn (_("Badly formed .dim directive")); + as_warn (_("badly formed .dim directive")); break; } } @@ -2604,7 +2604,7 @@ ecoff_directive_dim (ignore) { if (coff_type.num_dims >= N_TQ) { - as_warn (_("Too many .dim entries")); + as_warn (_("too many .dim entries")); break; } coff_type.dimensions[coff_type.num_dims] = dimens[i]; @@ -2666,7 +2666,7 @@ ecoff_directive_size (ignore) { if (*input_line_pointer != '\n' && *input_line_pointer != ';') - as_warn (_("Badly formed .size directive")); + as_warn (_("badly formed .size directive")); break; } } @@ -2679,7 +2679,7 @@ ecoff_directive_size (ignore) { if (coff_type.num_sizes >= N_TQ) { - as_warn (_("Too many .size entries")); + as_warn (_("too many .size entries")); break; } coff_type.sizes[coff_type.num_sizes] = sizes[i]; @@ -2720,7 +2720,7 @@ ecoff_directive_type (ignore) /* FIXME: We could handle this by setting the continued bit. There would still be a limit: the .type argument can not be infinite. */ - as_warn (_("The type of %s is too complex; it will be simplified"), + as_warn (_("the type of %s is too complex; it will be simplified"), coff_sym_name); break; } @@ -2862,7 +2862,7 @@ ecoff_directive_endef (ignore) if (coff_type.num_sizes != 1 || diff < 0) { - as_warn (_("Bad COFF debugging info")); + as_warn (_("bad COFF debugging information")); return; } @@ -2911,7 +2911,7 @@ ecoff_directive_endef (ignore) { if (coff_tag == (char *) NULL) { - as_warn (_("No tag specified for %s"), name); + as_warn (_("no tag specified for %s"), name); return; } @@ -2943,7 +2943,7 @@ ecoff_directive_endef (ignore) if (coff_type.num_sizes - coff_type.num_dims - coff_type.extra_sizes != 1) { - as_warn (_("Bad COFF debugging information")); + as_warn (_("bad COFF debugging information")); return; } else @@ -3010,7 +3010,6 @@ ecoff_directive_end (ignore) { char *name; char name_end; - register int ch; symbolS *ent; if (cur_file_ptr == (efdr_t *) NULL) @@ -3030,8 +3029,7 @@ ecoff_directive_end (ignore) name = input_line_pointer; name_end = get_symbol_end (); - ch = *name; - if (! is_name_beginner (ch)) + if (name == input_line_pointer) { as_warn (_(".end directive has no name")); *input_line_pointer = name_end; @@ -3067,7 +3065,6 @@ ecoff_directive_ent (ignore) { char *name; char name_end; - register int ch; if (cur_file_ptr == (efdr_t *) NULL) add_file ((const char *) NULL, 0, 1); @@ -3082,8 +3079,7 @@ ecoff_directive_ent (ignore) name = input_line_pointer; name_end = get_symbol_end (); - ch = *name; - if (! is_name_beginner (ch)) + if (name == input_line_pointer) { as_warn (_(".ent directive has no name")); *input_line_pointer = name_end; @@ -3105,7 +3101,7 @@ ecoff_directive_ent (ignore) ++input_line_pointer; SKIP_WHITESPACE (); } - if (isdigit ((unsigned char) *input_line_pointer) + if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-') (void) get_absolute_expression (); @@ -3149,7 +3145,7 @@ ecoff_directive_file (ignore) if (cur_proc_ptr != (proc_t *) NULL) { - as_warn (_("No way to handle .file within .ent/.end section")); + as_warn (_("no way to handle .file within .ent/.end section")); demand_empty_rest_of_line (); return; } @@ -3181,7 +3177,7 @@ ecoff_directive_fmask (ignore) if (get_absolute_expression_and_terminator (&val) != ',') { - as_warn (_("Bad .fmask directive")); + as_warn (_("bad .fmask directive")); --input_line_pointer; demand_empty_rest_of_line (); return; @@ -3214,7 +3210,7 @@ ecoff_directive_frame (ignore) if (*input_line_pointer++ != ',' || get_absolute_expression_and_terminator (&val) != ',') { - as_warn (_("Bad .frame directive")); + as_warn (_("bad .frame directive")); --input_line_pointer; demand_empty_rest_of_line (); return; @@ -3251,7 +3247,7 @@ ecoff_directive_mask (ignore) if (get_absolute_expression_and_terminator (&val) != ',') { - as_warn (_("Bad .mask directive")); + as_warn (_("bad .mask directive")); --input_line_pointer; demand_empty_rest_of_line (); return; @@ -3400,7 +3396,7 @@ ecoff_directive_weakext (ignore) { if (S_IS_DEFINED (symbolP)) { - as_bad (_("Ignoring attempt to redefine symbol `%s'."), + as_bad (_("symbol `%s' is already defined"), S_GET_NAME (symbolP)); ignore_rest_of_line (); return; @@ -3526,7 +3522,7 @@ ecoff_stab (sec, what, string, type, other, desc) dummy_symr.index = desc; if (dummy_symr.index != desc) { - as_warn (_("Line number (%d) for .stab%c directive cannot fit in index field (20 bits)"), + as_warn (_("line number (%d) for .stab%c directive cannot fit in index field (20 bits)"), desc, what); return; } @@ -3550,7 +3546,7 @@ ecoff_stab (sec, what, string, type, other, desc) listing_source_file (string); #endif - if (isdigit ((unsigned char) *input_line_pointer) + if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-' || *input_line_pointer == '+') { @@ -3562,7 +3558,7 @@ ecoff_stab (sec, what, string, type, other, desc) } else if (! is_name_beginner ((unsigned char) *input_line_pointer)) { - as_warn (_("Illegal .stab%c directive, bad character"), what); + as_warn (_("illegal .stab%c directive, bad character"), what); return; } else @@ -3620,7 +3616,7 @@ ecoff_frob_symbol (sym) { if (S_IS_COMMON (sym) && S_GET_VALUE (sym) > 0 - && S_GET_VALUE (sym) <= (unsigned) bfd_get_gp_size (stdoutput)) + && S_GET_VALUE (sym) <= bfd_get_gp_size (stdoutput)) { static asection scom_section; static asymbol scom_symbol; @@ -3645,7 +3641,7 @@ ecoff_frob_symbol (sym) if (S_IS_WEAK (sym)) { if (S_IS_COMMON (sym)) - as_bad (_("Symbol `%s' can not be both weak and common"), + as_bad (_("symbol `%s' can not be both weak and common"), S_GET_NAME (sym)); } } @@ -4085,7 +4081,7 @@ ecoff_build_symbols (backend, buf, bufend, offset) s = symbol_get_obj (as_sym)->ecoff_extern_size; if (s == 0 - || s > (unsigned) bfd_get_gp_size (stdoutput)) + || s > bfd_get_gp_size (stdoutput)) sc = sc_Undefined; else { @@ -4100,7 +4096,7 @@ ecoff_build_symbols (backend, buf, bufend, offset) { if (S_GET_VALUE (as_sym) > 0 && (S_GET_VALUE (as_sym) - <= (unsigned) bfd_get_gp_size (stdoutput))) + <= bfd_get_gp_size (stdoutput))) sc = sc_SCommon; else sc = sc_Common; @@ -4740,7 +4736,7 @@ ecoff_build_debug (hdr, bufp, backend) cur_file_ptr->cur_scope = cur_file_ptr->cur_scope->prev; if (! end_warning && ! cur_file_ptr->fake) { - as_warn (_("Missing .end or .bend at end of file")); + as_warn (_("missing .end or .bend at end of file")); end_warning = 1; } } diff --git a/contrib/binutils/gas/ehopt.c b/contrib/binutils/gas/ehopt.c index 64ea7e0..ad6e028 100644 --- a/contrib/binutils/gas/ehopt.c +++ b/contrib/binutils/gas/ehopt.c @@ -462,7 +462,7 @@ eh_frame_estimate_size_before_relax (frag) int ca = frag->fr_subtype >> 3; int ret; - diff = resolve_symbol_value (frag->fr_symbol, 0); + diff = resolve_symbol_value (frag->fr_symbol); if (ca > 0 && diff % ca == 0 && diff / ca < 0x40) ret = 0; @@ -508,7 +508,7 @@ eh_frame_convert_frag (frag) loc4_frag = (fragS *) frag->fr_opcode; loc4_fix = (int) frag->fr_offset; - diff = resolve_symbol_value (frag->fr_symbol, 1); + diff = resolve_symbol_value (frag->fr_symbol); switch (frag->fr_subtype & 7) { diff --git a/contrib/binutils/gas/emul-target.h b/contrib/binutils/gas/emul-target.h index 8f18684..4c1a02a 100644 --- a/contrib/binutils/gas/emul-target.h +++ b/contrib/binutils/gas/emul-target.h @@ -50,14 +50,15 @@ #define emul_fake_label_name 0 #endif -struct emulation emul_struct_name = { - 0, - emul_name, - emul_init, - emul_bfd_name, - emul_local_labels_fb, emul_local_labels_dollar, - emul_leading_underscore, emul_strip_underscore, - emul_default_endian, - emul_fake_label_name, - emul_format, -}; +struct emulation emul_struct_name = + { + 0, + emul_name, + emul_init, + emul_bfd_name, + emul_local_labels_fb, emul_local_labels_dollar, + emul_leading_underscore, emul_strip_underscore, + emul_default_endian, + emul_fake_label_name, + emul_format, + }; diff --git a/contrib/binutils/gas/emul.h b/contrib/binutils/gas/emul.h index 465f844..b665260 100644 --- a/contrib/binutils/gas/emul.h +++ b/contrib/binutils/gas/emul.h @@ -21,23 +21,24 @@ #ifndef EMUL_DEFS #define EMUL_DEFS -struct emulation { - void (*match) PARAMS ((const char *)); - const char *name; - void (*init) PARAMS ((void)); - const char *(*bfd_name) PARAMS ((void)); - unsigned local_labels_fb : 1; - unsigned local_labels_dollar : 1; - unsigned leading_underscore : 2; - unsigned strip_underscore : 1; - unsigned default_endian : 2; - const char *fake_label_name; - const struct format_ops *format; -}; - -COMMON struct emulation *this_emulation; - -extern const char *default_emul_bfd_name PARAMS ((void)); +struct emulation + { + void (* match) PARAMS ((const char *)); + const char * name; + void (* init) PARAMS ((void)); + const char *(* bfd_name) PARAMS ((void)); + unsigned local_labels_fb : 1; + unsigned local_labels_dollar : 1; + unsigned leading_underscore : 2; + unsigned strip_underscore : 1; + unsigned default_endian : 2; + const char * fake_label_name; + const struct format_ops * format; + }; + +COMMON struct emulation * this_emulation; + +extern const char * default_emul_bfd_name PARAMS ((void)); extern void common_emul_init PARAMS ((void)); #endif diff --git a/contrib/binutils/gas/expr.c b/contrib/binutils/gas/expr.c index 3b49ac7..74c49d9 100644 --- a/contrib/binutils/gas/expr.c +++ b/contrib/binutils/gas/expr.c @@ -25,11 +25,11 @@ (It also gives smaller files to re-compile.) Here, "operand"s are of expressions, not instructions. */ -#include <ctype.h> #include <string.h> #define min(a, b) ((a) < (b) ? (a) : (b)) #include "as.h" +#include "safe-ctype.h" #include "obstack.h" static void floating_constant PARAMS ((expressionS * expressionP)); @@ -81,9 +81,9 @@ make_expr_symbol (expressionP) generic_floating_point_number or generic_bignum, and we are going to lose it if we haven't already. */ if (expressionP->X_add_number > 0) - as_bad (_("bignum invalid; zero assumed")); + as_bad (_("bignum invalid")); else - as_bad (_("floating point number invalid; zero assumed")); + as_bad (_("floating point number invalid")); zero.X_op = O_constant; zero.X_add_number = 0; zero.X_unsigned = 0; @@ -105,7 +105,7 @@ make_expr_symbol (expressionP) symbol_set_value_expression (symbolP, expressionP); if (expressionP->X_op == O_constant) - resolve_symbol_value (symbolP, 1); + resolve_symbol_value (symbolP); n = (struct expr_symbol_line *) xmalloc (sizeof *n); n->sym = symbolP; @@ -243,11 +243,12 @@ floating_constant (expressionP) { if (error_code == ERROR_EXPONENT_OVERFLOW) { - as_bad (_("bad floating-point constant: exponent overflow, probably assembling junk")); + as_bad (_("bad floating-point constant: exponent overflow")); } else { - as_bad (_("bad floating-point constant: unknown error code=%d."), error_code); + as_bad (_("bad floating-point constant: unknown error code=%d"), + error_code); } } expressionP->X_op = O_big; @@ -330,9 +331,7 @@ integer_constant (radix, expressionP) /* In MRI mode, the number may have a suffix indicating the radix. For that matter, it might actually be a floating point constant. */ - for (suffix = input_line_pointer; - isalnum ((unsigned char) *suffix); - suffix++) + for (suffix = input_line_pointer; ISALNUM (*suffix); suffix++) { if (*suffix == 'e' || *suffix == 'E') flt = 1; @@ -346,8 +345,7 @@ integer_constant (radix, expressionP) else { c = *--suffix; - if (islower ((unsigned char) c)) - c = toupper (c); + c = TOUPPER (c); if (c == 'B') radix = 2; else if (c == 'D') @@ -427,7 +425,7 @@ integer_constant (radix, expressionP) /* Check for 8 digit per word max. */ if (ndigit > 8) - as_bad (_("A bignum with underscores may not have more than 8 hex digits in any word.")); + as_bad (_("a bignum with underscores may not have more than 8 hex digits in any word")); /* Add this chunk to the bignum. Shift things down 2 little digits. */ @@ -450,7 +448,7 @@ integer_constant (radix, expressionP) assert (num_little_digits >= 4); if (num_little_digits != 8) - as_bad (_("A bignum with underscores must have exactly 4 words.")); + as_bad (_("a bignum with underscores must have exactly 4 words")); /* We might have some leading zeros. These can be trimmed to give us a change to fit this constant into a small number. */ @@ -573,7 +571,7 @@ integer_constant (radix, expressionP) /* Either not seen or not defined. */ /* @@ Should print out the original string instead of the parsed number. */ - as_bad (_("backw. ref to unknown label \"%d:\", 0 assumed."), + as_bad (_("backward ref to unknown label \"%d:\""), (int) number); expressionP->X_op = O_constant; } @@ -696,7 +694,7 @@ mri_char_constant (expressionP) if (i < 0) { - as_bad (_("Character constant too large")); + as_bad (_("character constant too large")); i = 0; } @@ -761,7 +759,7 @@ current_location (expressionp) /* In: Input_line_pointer points to 1st char of operand, which may be a space. - Out: A expressionS. + Out: An expressionS. The operand may have been empty: in this case X_op == O_absent. Input_line_pointer->(next non-blank) char after operand. */ @@ -810,6 +808,9 @@ operand (expressionP) #ifdef LITERAL_PREFIXDOLLAR_HEX case '$': + /* $L is the start of a local label, not a hex constant. */ + if (* input_line_pointer == 'L') + goto isname; integer_constant (16, expressionP); break; #endif @@ -858,8 +859,7 @@ operand (expressionP) { input_line_pointer++; floating_constant (expressionP); - expressionP->X_add_number = - - (isupper ((unsigned char) c) ? tolower (c) : c); + expressionP->X_add_number = - TOLOWER (c); } else { @@ -981,8 +981,7 @@ operand (expressionP) case 'G': input_line_pointer++; floating_constant (expressionP); - expressionP->X_add_number = - - (isupper ((unsigned char) c) ? tolower (c) : c); + expressionP->X_add_number = - TOLOWER (c); break; case '$': @@ -1010,7 +1009,7 @@ operand (expressionP) #ifdef RELAX_PAREN_GROUPING if (c != '(') #endif - as_bad (_("Missing '%c' assumed"), c == '(' ? ')' : ']'); + as_bad (_("missing '%c'"), c == '(' ? ')' : ']'); } else input_line_pointer++; @@ -1231,7 +1230,7 @@ operand (expressionP) specially in certain contexts. If a name always has a specific value, it can often be handled by simply entering it in the symbol table. */ - if (md_parse_name (name, expressionP)) + if (md_parse_name (name, expressionP, &c)) { *input_line_pointer = c; break; @@ -1312,7 +1311,7 @@ operand (expressionP) if (expressionP->X_op == O_absent) { ++input_line_pointer; - as_bad (_("Bad expression")); + as_bad (_("bad expression")); expressionP->X_op = O_constant; expressionP->X_add_number = 0; } @@ -1343,7 +1342,7 @@ operand (expressionP) /* Internal. Simplify a struct expression for use by expr (). */ -/* In: address of a expressionS. +/* In: address of an expressionS. The X_op field of the expressionS may only take certain values. Elsewise we waste time special-case testing. Sigh. Ditto SEG_ABSENT. @@ -1400,7 +1399,7 @@ clean_up_expression (expressionP) Unary operators and parenthetical expressions are treated as operands. As usual, Q==quantity==operand, O==operator, X==expression mnemonics. - We used to do a aho/ullman shift-reduce parser, but the logic got so + We used to do an aho/ullman shift-reduce parser, but the logic got so warped that I flushed it and wrote a recursive-descent parser instead. Now things are stable, would anybody like to write a fast parser? Most expressions are either register (which does not even reach here) @@ -1456,7 +1455,7 @@ static const operatorT op_encoding[256] = { 0 operand, (expression) 1 || 2 && - 3 = <> < <= >= > + 3 == <> < <= >= > 4 + - 5 used for * / % in MRI mode 6 & ^ ! | @@ -1695,21 +1694,6 @@ expr (rankarg, resultP) } } - if (retval == undefined_section) - { - if (SEG_NORMAL (rightseg)) - retval = rightseg; - } - else if (! SEG_NORMAL (retval)) - retval = rightseg; - else if (SEG_NORMAL (rightseg) - && retval != rightseg -#ifdef DIFF_EXPR_OK - && op_left != O_subtract -#endif - ) - as_bad (_("operation combines symbols in different segments")); - op_right = operator (&op_chars); know (op_right == O_illegal @@ -1765,8 +1749,7 @@ expr (rankarg, resultP) && resultP->X_op == O_symbol && (symbol_get_frag (right.X_add_symbol) == symbol_get_frag (resultP->X_add_symbol)) - && SEG_NORMAL (S_GET_SEGMENT (right.X_add_symbol))) - + && SEG_NORMAL (rightseg)) { resultP->X_add_number -= right.X_add_number; resultP->X_add_number += (S_GET_VALUE (resultP->X_add_symbol) @@ -1861,7 +1844,14 @@ expr (rankarg, resultP) if (op_left == O_add) resultP->X_add_number += right.X_add_number; else if (op_left == O_subtract) - resultP->X_add_number -= right.X_add_number; + { + resultP->X_add_number -= right.X_add_number; + if (retval == rightseg && SEG_NORMAL (retval)) + { + retval = absolute_section; + rightseg = absolute_section; + } + } } else { @@ -1873,6 +1863,21 @@ expr (rankarg, resultP) resultP->X_unsigned = 1; } + if (retval != rightseg) + { + if (! SEG_NORMAL (retval)) + { + if (retval != undefined_section || SEG_NORMAL (rightseg)) + retval = rightseg; + } + else if (SEG_NORMAL (rightseg) +#ifdef DIFF_EXPR_OK + && op_left != O_subtract +#endif + ) + as_bad (_("operation combines symbols in different segments")); + } + op_left = op_right; } /* While next operator is >= this rank. */ diff --git a/contrib/binutils/gas/frags.c b/contrib/binutils/gas/frags.c index 4dc2a7d..8d7ed2f 100644 --- a/contrib/binutils/gas/frags.c +++ b/contrib/binutils/gas/frags.c @@ -84,7 +84,7 @@ frag_grow (nchars) frchain_now->frch_obstack.chunk_size = oldc; } if (obstack_room (&frchain_now->frch_obstack) < nchars) - as_fatal (_("Can't extend frag %d. chars"), nchars); + as_fatal (_("can't extend frag %u chars"), nchars); } /* Call this to close off a completed frag, and start up a new (empty) diff --git a/contrib/binutils/gas/frags.h b/contrib/binutils/gas/frags.h index e4cb050..df259b8 100644 --- a/contrib/binutils/gas/frags.h +++ b/contrib/binutils/gas/frags.h @@ -43,8 +43,9 @@ struct obstack; struct frag { /* Object file address (as an octet offset). */ addressT fr_address; - /* Chain forward; ascending address order. Rooted in frch_root. */ - struct frag *fr_next; + /* When relaxing multiple times, remember the address the frag had + in the last relax pass. */ + addressT last_fr_address; /* (Fixed) number of octets we know we have. May be 0. */ offsetT fr_fix; @@ -52,12 +53,19 @@ struct frag { The generic frag handling code no longer makes any use of fr_var. */ offsetT fr_var; /* For variable-length tail. */ - symbolS *fr_symbol; - /* For variable-length tail. */ offsetT fr_offset; + /* For variable-length tail. */ + symbolS *fr_symbol; /* Points to opcode low addr byte, for relaxation. */ char *fr_opcode; + /* Chain forward; ascending address order. Rooted in frch_root. */ + struct frag *fr_next; + + /* Where the frag was created, or where it became a variant frag. */ + char *fr_file; + unsigned int fr_line; + #ifndef NO_LISTING struct list_info_struct *line; #endif @@ -86,10 +94,6 @@ struct frag { TC_FRAG_TYPE tc_frag_data; #endif - /* Where the frag was created, or where it became a variant frag. */ - char *fr_file; - unsigned int fr_line; - /* Data begins here. */ char fr_literal[1]; }; diff --git a/contrib/binutils/gas/gasp.c b/contrib/binutils/gas/gasp.c index ad33a46..73b4d88 100644 --- a/contrib/binutils/gas/gasp.c +++ b/contrib/binutils/gas/gasp.c @@ -1,5 +1,5 @@ /* gasp.c - Gnu assembler preprocessor main program. - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Steve and Judy Chamberlain of Cygnus Support, @@ -51,7 +51,6 @@ suitable for gas to consume. #include <stdio.h> #include <string.h> #include <getopt.h> -#include <ctype.h> #ifdef HAVE_STDLIB_H #include <stdlib.h> @@ -63,6 +62,7 @@ extern char *malloc (); #include "ansidecl.h" #include "libiberty.h" +#include "safe-ctype.h" #include "sb.h" #include "macro.h" #include "asintl.h" @@ -539,7 +539,7 @@ sb_strtol (idx, string, base, ptr) { int ch = string->ptr[idx]; int dig = 0; - if (isdigit (ch)) + if (ISDIGIT (ch)) dig = ch - '0'; else if (ch >= 'a' && ch <= 'f') dig = ch - 'a' + 10; @@ -574,7 +574,7 @@ level_0 (idx, string, lhs) lhs->value = 0; - if (isdigit ((unsigned char) string->ptr[idx])) + if (ISDIGIT (string->ptr[idx])) { idx = sb_strtol (idx, string, 10, &lhs->value); } @@ -1132,7 +1132,7 @@ change_base (idx, in, out) idx++; } } - else if (isdigit ((unsigned char) in->ptr[idx])) + else if (ISDIGIT (in->ptr[idx])) { int value; /* All numbers must start with a digit, let's chew it and @@ -1549,6 +1549,7 @@ get_any_string (idx, in, out, expand, pretend_quoted) int val; char buf[20]; /* Turns the next expression into a string. */ + /* xgettext: no-c-format */ idx = exp_get_abs (_("% operator needs absolute expression"), idx + 1, in, @@ -1676,7 +1677,7 @@ doinstr (idx, in, out) idx = sb_skip_comma (idx, in); idx = get_and_process (idx, in, &search); idx = sb_skip_comma (idx, in); - if (isdigit ((unsigned char) in->ptr[idx])) + if (ISDIGIT (in->ptr[idx])) { idx = exp_get_abs (_(".instr needs absolute expresson.\n"), idx, in, &start); } @@ -1776,26 +1777,26 @@ process_assigns (idx, in, buf) } else if (idx + 3 < in->len && in->ptr[idx] == '.' - && toupper ((unsigned char) in->ptr[idx + 1]) == 'L' - && toupper ((unsigned char) in->ptr[idx + 2]) == 'E' - && toupper ((unsigned char) in->ptr[idx + 3]) == 'N') + && TOUPPER (in->ptr[idx + 1]) == 'L' + && TOUPPER (in->ptr[idx + 2]) == 'E' + && TOUPPER (in->ptr[idx + 3]) == 'N') idx = dolen (idx + 4, in, buf); else if (idx + 6 < in->len && in->ptr[idx] == '.' - && toupper ((unsigned char) in->ptr[idx + 1]) == 'I' - && toupper ((unsigned char) in->ptr[idx + 2]) == 'N' - && toupper ((unsigned char) in->ptr[idx + 3]) == 'S' - && toupper ((unsigned char) in->ptr[idx + 4]) == 'T' - && toupper ((unsigned char) in->ptr[idx + 5]) == 'R') + && TOUPPER (in->ptr[idx + 1]) == 'I' + && TOUPPER (in->ptr[idx + 2]) == 'N' + && TOUPPER (in->ptr[idx + 3]) == 'S' + && TOUPPER (in->ptr[idx + 4]) == 'T' + && TOUPPER (in->ptr[idx + 5]) == 'R') idx = doinstr (idx + 6, in, buf); else if (idx + 7 < in->len && in->ptr[idx] == '.' - && toupper ((unsigned char) in->ptr[idx + 1]) == 'S' - && toupper ((unsigned char) in->ptr[idx + 2]) == 'U' - && toupper ((unsigned char) in->ptr[idx + 3]) == 'B' - && toupper ((unsigned char) in->ptr[idx + 4]) == 'S' - && toupper ((unsigned char) in->ptr[idx + 5]) == 'T' - && toupper ((unsigned char) in->ptr[idx + 6]) == 'R') + && TOUPPER (in->ptr[idx + 1]) == 'S' + && TOUPPER (in->ptr[idx + 2]) == 'U' + && TOUPPER (in->ptr[idx + 3]) == 'B' + && TOUPPER (in->ptr[idx + 4]) == 'S' + && TOUPPER (in->ptr[idx + 5]) == 'T' + && TOUPPER (in->ptr[idx + 6]) == 'R') idx = dosubstr (idx + 7, in, buf); else if (ISFIRSTCHAR (in->ptr[idx])) { @@ -2130,8 +2131,8 @@ whatcond (idx, in, val) char a, b; p = in->ptr + idx; - a = toupper ((unsigned char) p[0]); - b = toupper ((unsigned char) p[1]); + a = TOUPPER (p[0]); + b = TOUPPER (p[1]); if (a == 'E' && b == 'Q') cond = EQ; else if (a == 'N' && b == 'E') @@ -2980,13 +2981,13 @@ chartype_init () int x; for (x = 0; x < 256; x++) { - if (isalpha (x) || x == '_' || x == '$') + if (ISALPHA (x) || x == '_' || x == '$') chartype[x] |= FIRSTBIT; if (mri && x == '.') chartype[x] |= FIRSTBIT; - if (isdigit (x) || isalpha (x) || x == '_' || x == '$') + if (ISDIGIT (x) || ISALPHA (x) || x == '_' || x == '$') chartype[x] |= NEXTBIT; if (x == ' ' || x == '\t' || x == ',' || x == '"' || x == ';' @@ -3537,6 +3538,8 @@ show_help () show_usage (stdout, 0); } +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -3552,6 +3555,9 @@ main (argc, argv) #if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES) setlocale (LC_MESSAGES, ""); #endif +#if defined (HAVE_SETLOCALE) + setlocale (LC_CTYPE, ""); +#endif bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); diff --git a/contrib/binutils/gas/hash.c b/contrib/binutils/gas/hash.c index ab28396..e993136 100644 --- a/contrib/binutils/gas/hash.c +++ b/contrib/binutils/gas/hash.c @@ -1,6 +1,6 @@ /* hash.c -- gas hash table code Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, - 2000 + 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -30,6 +30,7 @@ structure. */ #include "as.h" +#include "safe-ctype.h" #include "obstack.h" /* The default number of entries to use when creating a hash table. */ @@ -458,8 +459,7 @@ main () printf ("hash_test command: "); gets (answer); command = answer[0]; - if (isupper (command)) - command = tolower (command); /* Ecch! */ + command = TOLOWER (command); /* Ecch! */ switch (command) { case '#': diff --git a/contrib/binutils/gas/input-file.c b/contrib/binutils/gas/input-file.c index f001e52..798f327 100644 --- a/contrib/binutils/gas/input-file.c +++ b/contrib/binutils/gas/input-file.c @@ -1,5 +1,5 @@ /* input_file.c - Deal with Input Files - - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000 + Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -19,50 +19,44 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* - * Confines all details of reading source bytes to this module. - * All O/S specific crocks should live here. - * What we lose in "efficiency" we gain in modularity. - * Note we don't need to #include the "as.h" file. No common coupling! - */ +/* Confines all details of reading source bytes to this module. + All O/S specific crocks should live here. + What we lose in "efficiency" we gain in modularity. + Note we don't need to #include the "as.h" file. No common coupling! */ #include <stdio.h> #include <string.h> - #include "as.h" #include "input-file.h" +#include "safe-ctype.h" static int input_file_get PARAMS ((char *, int)); /* This variable is non-zero if the file currently being read should be - preprocessed by app. It is zero if the file can be read straight in. - */ + preprocessed by app. It is zero if the file can be read straight in. */ int preprocess = 0; -/* - * This code opens a file, then delivers BUFFER_SIZE character - * chunks of the file on demand. - * BUFFER_SIZE is supposed to be a number chosen for speed. - * The caller only asks once what BUFFER_SIZE is, and asks before - * the nature of the input files (if any) is known. - */ +/* This code opens a file, then delivers BUFFER_SIZE character + chunks of the file on demand. + BUFFER_SIZE is supposed to be a number chosen for speed. + The caller only asks once what BUFFER_SIZE is, and asks before + the nature of the input files (if any) is known. */ #define BUFFER_SIZE (32 * 1024) -/* - * We use static data: the data area is not sharable. - */ +/* We use static data: the data area is not sharable. */ static FILE *f_in; static char *file_name; /* Struct for saving the state of this module for file includes. */ -struct saved_file { - FILE *f_in; - char *file_name; - int preprocess; - char *app_save; -}; +struct saved_file + { + FILE * f_in; + char * file_name; + int preprocess; + char * app_save; + }; /* These hooks accomodate most operating systems. */ @@ -92,6 +86,7 @@ input_file_is_open () /* Push the state of our input, returning a pointer to saved info that can be restored with input_file_pop (). */ + char * input_file_push () { @@ -105,7 +100,8 @@ input_file_push () if (preprocess) saved->app_save = app_push (); - input_file_begin (); /* Initialize for new file */ + /* Initialize for new file. */ + input_file_begin (); return (char *) saved; } @@ -116,7 +112,7 @@ input_file_pop (arg) { register struct saved_file *saved = (struct saved_file *) arg; - input_file_end (); /* Close out old file */ + input_file_end (); /* Close out old file. */ f_in = saved->f_in; file_name = saved->file_name; @@ -140,7 +136,7 @@ input_file_open (filename, pre) assert (filename != 0); /* Filename may not be NULL. */ if (filename[0]) { /* We have a file name. Suck it and see. */ - f_in = fopen (filename, "r"); + f_in = fopen (filename, FOPEN_RT); file_name = filename; } else @@ -150,42 +146,54 @@ input_file_open (filename, pre) } if (f_in == (FILE *) 0) { - as_bad (_("Can't open %s for reading."), file_name); + as_bad (_("can't open %s for reading"), file_name); as_perror ("%s", file_name); return; } c = getc (f_in); if (c == '#') - { /* Begins with comment, may not want to preprocess */ + { + /* Begins with comment, may not want to preprocess. */ c = getc (f_in); if (c == 'N') - { - fgets (buf, 80, f_in); - if (!strcmp (buf, "O_APP\n")) - preprocess = 0; - if (!strchr (buf, '\n')) - ungetc ('#', f_in); /* It was longer */ - else - ungetc ('\n', f_in); - } + { + fgets (buf, 80, f_in); + if (!strncmp (buf, "O_APP", 5) && ISSPACE (buf[5])) + preprocess = 0; + if (!strchr (buf, '\n')) + ungetc ('#', f_in); /* It was longer. */ + else + ungetc ('\n', f_in); + } + else if (c == 'A') + { + fgets (buf, 80, f_in); + if (!strncmp (buf, "PP", 2) && ISSPACE (buf[2])) + preprocess = 1; + if (!strchr (buf, '\n')) + ungetc ('#', f_in); + else + ungetc ('\n', f_in); + } else if (c == '\n') - ungetc ('\n', f_in); + ungetc ('\n', f_in); else - ungetc ('#', f_in); + ungetc ('#', f_in); } else ungetc (c, f_in); } /* Close input file. */ + void input_file_close () { + /* Don't close a null file pointer. */ if (f_in != NULL) - { - fclose (f_in); - } /* don't close a null file pointer */ + fclose (f_in); + f_in = 0; } @@ -218,12 +226,10 @@ input_file_give_next_buffer (where) if (f_in == (FILE *) 0) return 0; - /* - * fflush (stdin); could be done here if you want to synchronise - * stdin and stdout, for the case where our input file is stdin. - * Since the assembler shouldn't do any output to stdout, we - * don't bother to synch output and input. - */ + /* fflush (stdin); could be done here if you want to synchronise + stdin and stdout, for the case where our input file is stdin. + Since the assembler shouldn't do any output to stdout, we + don't bother to synch output and input. */ if (preprocess) size = do_scrub_chars (input_file_get, where, BUFFER_SIZE); else @@ -242,5 +248,6 @@ input_file_give_next_buffer (where) f_in = (FILE *) 0; return_value = 0; } - return (return_value); + + return return_value; } diff --git a/contrib/binutils/gas/input-scrub.c b/contrib/binutils/gas/input-scrub.c index e9c7240..d343711 100644 --- a/contrib/binutils/gas/input-scrub.c +++ b/contrib/binutils/gas/input-scrub.c @@ -394,7 +394,7 @@ input_scrub_next_buffer (bufp) partial_where = 0; if (partial_size > 0) { - as_warn (_("Partial line at end of file ignored")); + as_warn (_("partial line at end of file ignored")); } /* Tell the listing we've finished the file. */ diff --git a/contrib/binutils/gas/itbl-lex.l b/contrib/binutils/gas/itbl-lex.l index 4ac0946..ed0be64 100644 --- a/contrib/binutils/gas/itbl-lex.l +++ b/contrib/binutils/gas/itbl-lex.l @@ -1,5 +1,5 @@ /* itbl-lex.l - Copyright 1997, 1998 Free Software Foundation, Inc. + Copyright 1997, 1998, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -22,7 +22,6 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> -#include <ctype.h> #include "itbl-parse.h" #ifdef DEBUG diff --git a/contrib/binutils/gas/itbl-ops.c b/contrib/binutils/gas/itbl-ops.c index d3650cd..d67a986 100644 --- a/contrib/binutils/gas/itbl-ops.c +++ b/contrib/binutils/gas/itbl-ops.c @@ -183,17 +183,18 @@ itbl_parse (char *insntbl) { extern FILE *yyin; extern int yyparse (void); - yyin = fopen (insntbl, "r"); + + yyin = fopen (insntbl, FOPEN_RT); if (yyin == 0) { printf ("Can't open processor instruction specification file \"%s\"\n", insntbl); return 1; } - else - { - while (yyparse ()); - } + + while (yyparse ()) + ; + fclose (yyin); itbl_have_entries = 1; return 0; @@ -506,7 +507,7 @@ itbl_assemble (char *name, char *s) int processor; if (!name || !*name) - return 0; /* error! must have a opcode name/expr */ + return 0; /* error! must have an opcode name/expr */ /* find entry in list of instructions for all processors */ for (processor = 0; processor < e_nprocs; processor++) diff --git a/contrib/binutils/gas/listing.c b/contrib/binutils/gas/listing.c index 8168ebe..c92f2db 100644 --- a/contrib/binutils/gas/listing.c +++ b/contrib/binutils/gas/listing.c @@ -91,10 +91,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA on a line */ -#include <ctype.h> - #include "as.h" #include <obstack.h> +#include "safe-ctype.h" #include "input-file.h" #include "subsegs.h" @@ -370,7 +369,7 @@ listing_newline (ps) unsigned char c = *src++; /* Omit control characters in the listing. */ - if (isascii (c) && ! iscntrl (c)) + if (!ISCNTRL (c)) *dest++ = c; } @@ -485,7 +484,7 @@ buffer_line (file, line, size) } last_open_file_info = file; - last_open_file = fopen (file->filename, "r"); + last_open_file = fopen (file->filename, FOPEN_RT); if (last_open_file == NULL) { file->at_end = 1; @@ -514,9 +513,12 @@ buffer_line (file, line, size) if (c == EOF) { file->at_end = 1; - *p++ = '.'; - *p++ = '.'; - *p++ = '.'; + if (count + 2 < size) + { + *p++ = '.'; + *p++ = '.'; + *p++ = '.'; + } } file->linenum++; *p++ = 0; @@ -908,7 +910,7 @@ debugging_pseudo (list, line) was_debug = in_debug; in_debug = 0; - while (isspace ((unsigned char) *line)) + while (ISSPACE (*line)) line++; if (*line != '.') @@ -1121,7 +1123,7 @@ listing_print (name) } else { - list_file = fopen (name, "w"); + list_file = fopen (name, FOPEN_WT); if (list_file != NULL) using_stdout = 0; else @@ -1295,7 +1297,7 @@ listing_title (depth) } else if (*input_line_pointer == '\n') { - as_bad (_("New line in title")); + as_bad (_("new line in title")); demand_empty_rest_of_line (); return; } diff --git a/contrib/binutils/gas/macro.c b/contrib/binutils/gas/macro.c index 8512208..11d6511 100644 --- a/contrib/binutils/gas/macro.c +++ b/contrib/binutils/gas/macro.c @@ -1,5 +1,5 @@ /* macro.c - macro support for gas and gasp - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Steve and Judy Chamberlain of Cygnus Support, @@ -24,20 +24,14 @@ #include "config.h" -/* AIX requires this to be the first thing in the file. */ -#ifdef __GNUC__ -# ifndef alloca -# ifdef __STDC__ -extern void *alloca (); -# else -extern char *alloca (); -# endif -# endif -#else +#ifndef __GNUC__ # if HAVE_ALLOCA_H # include <alloca.h> # else # ifdef _AIX +/* Indented so that pre-ansi C compilers will ignore it, rather than + choke on it. Some versions of AIX require this to be the first + thing in the file. */ #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ @@ -49,7 +43,7 @@ extern void *alloca (); # endif /* alloca */ # endif /* _AIX */ # endif /* HAVE_ALLOCA_H */ -#endif +#endif /* __GNUC__ */ #include <stdio.h> #ifdef HAVE_STRING_H @@ -57,11 +51,11 @@ extern void *alloca (); #else #include <strings.h> #endif -#include <ctype.h> #ifdef HAVE_STDLIB_H #include <stdlib.h> #endif #include "libiberty.h" +#include "safe-ctype.h" #include "sb.h" #include "hash.h" #include "macro.h" @@ -189,7 +183,7 @@ buffer_and_nest (from, to, ptr, get_line) /* Skip over a label. */ while (i < ptr->len - && (isalnum ((unsigned char) ptr->ptr[i]) + && (ISALNUM (ptr->ptr[i]) || ptr->ptr[i] == '_' || ptr->ptr[i] == '$')) i++; @@ -212,11 +206,11 @@ buffer_and_nest (from, to, ptr, get_line) i++; if (strncasecmp (ptr->ptr + i, from, from_len) == 0 && (ptr->len == (i + from_len) - || ! isalnum (ptr->ptr[i + from_len]))) + || ! ISALNUM (ptr->ptr[i + from_len]))) depth++; if (strncasecmp (ptr->ptr + i, to, to_len) == 0 && (ptr->len == (i + to_len) - || ! isalnum (ptr->ptr[i + to_len]))) + || ! ISALNUM (ptr->ptr[i + to_len]))) { depth--; if (depth == 0) @@ -247,13 +241,13 @@ get_token (idx, in, name) sb *name; { if (idx < in->len - && (isalpha ((unsigned char) in->ptr[idx]) + && (ISALPHA (in->ptr[idx]) || in->ptr[idx] == '_' || in->ptr[idx] == '$')) { sb_add_char (name, in->ptr[idx++]); while (idx < in->len - && (isalnum ((unsigned char) in->ptr[idx]) + && (ISALNUM (in->ptr[idx]) || in->ptr[idx] == '_' || in->ptr[idx] == '$')) { @@ -384,6 +378,7 @@ get_any_string (idx, in, out, expand, pretend_quoted) int val; char buf[20]; /* Turns the next expression into a string. */ + /* xgettext: no-c-format */ idx = (*macro_expr) (_("% operator needs absolute expression"), idx + 1, in, @@ -573,8 +568,7 @@ define_macro (idx, in, label, get_line, namep) /* And stick it in the macro hash table. */ for (idx = 0; idx < name.len; idx++) - if (isupper ((unsigned char) name.ptr[idx])) - name.ptr[idx] = tolower (name.ptr[idx]); + name.ptr[idx] = TOLOWER (name.ptr[idx]); namestr = sb_terminate (&name); hash_jam (macro_hash, namestr, (PTR) macro); @@ -732,15 +726,14 @@ macro_expand_body (in, out, formals, formal_hash, comment_char, locals) sb_add_char (out, '&'); src++; } - else if (macro_mri - && isalnum ((unsigned char) in->ptr[src])) + else if (macro_mri && ISALNUM (in->ptr[src])) { int ind; formal_entry *f; - if (isdigit ((unsigned char) in->ptr[src])) + if (ISDIGIT (in->ptr[src])) ind = in->ptr[src] - '0'; - else if (isupper ((unsigned char) in->ptr[src])) + else if (ISUPPER (in->ptr[src])) ind = in->ptr[src] - 'A' + 10; else ind = in->ptr[src] - 'a' + 10; @@ -764,7 +757,7 @@ macro_expand_body (in, out, formals, formal_hash, comment_char, locals) } } else if ((macro_alternate || macro_mri) - && (isalpha ((unsigned char) in->ptr[src]) + && (ISALPHA (in->ptr[src]) || in->ptr[src] == '_' || in->ptr[src] == '$') && (! inquote @@ -935,21 +928,29 @@ macro_expand (idx, in, m, out, comment_char) /* The macro may be called with an optional qualifier, which may be referred to in the macro body as \0. */ if (idx < in->len && in->ptr[idx] == '.') - { - formal_entry *n; - - n = (formal_entry *) xmalloc (sizeof (formal_entry)); - sb_new (&n->name); - sb_new (&n->def); - sb_new (&n->actual); - n->index = QUAL_INDEX; - - n->next = m->formals; - m->formals = n; - - idx = get_any_string (idx + 1, in, &n->actual, 1, 0); - } - } + { + /* The Microtec assembler ignores this if followed by a white space. + (Macro invocation with empty extension) */ + idx++; + if ( idx < in->len + && in->ptr[idx] != ' ' + && in->ptr[idx] != '\t') + { + formal_entry *n; + + n = (formal_entry *) xmalloc (sizeof (formal_entry)); + sb_new (&n->name); + sb_new (&n->def); + sb_new (&n->actual); + n->index = QUAL_INDEX; + + n->next = m->formals; + m->formals = n; + + idx = get_any_string (idx, in, &n->actual, 1, 0); + } + } + } /* Peel off the actuals and store them away in the hash tables' actuals. */ idx = sb_skip_white (idx, in); @@ -1105,14 +1106,14 @@ check_macro (line, expand, comment_char, error, info) macro_entry *macro; sb line_sb; - if (! isalpha ((unsigned char) *line) + if (! ISALPHA (*line) && *line != '_' && *line != '$' && (! macro_mri || *line != '.')) return 0; s = line + 1; - while (isalnum ((unsigned char) *s) + while (ISALNUM (*s) || *s == '_' || *s == '$') ++s; @@ -1121,8 +1122,7 @@ check_macro (line, expand, comment_char, error, info) memcpy (copy, line, s - line); copy[s - line] = '\0'; for (cs = copy; *cs != '\0'; cs++) - if (isupper ((unsigned char) *cs)) - *cs = tolower (*cs); + *cs = TOLOWER (*cs); macro = (macro_entry *) hash_find (macro_hash, copy); diff --git a/contrib/binutils/gas/output-file.c b/contrib/binutils/gas/output-file.c index bcd49b5..531e35f 100644 --- a/contrib/binutils/gas/output-file.c +++ b/contrib/binutils/gas/output-file.c @@ -1,5 +1,5 @@ /* output-file.c - Deal with the output file - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1996, 1998, 1999 + Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1996, 1998, 1999, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -16,7 +16,8 @@ You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to - the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ #include <stdio.h> @@ -44,14 +45,14 @@ output_file_create (name) char *name; { if (name[0] == '-' && name[1] == '\0') - { - as_fatal (_("Can't open a bfd on stdout %s "), name); - } + as_fatal (_("can't open a bfd on stdout %s"), name); + else if (!(stdoutput = bfd_openw (name, TARGET_FORMAT))) { - as_perror (_("FATAL: Can't create %s"), name); + as_perror (_("FATAL: can't create %s"), name); exit (EXIT_FAILURE); } + bfd_set_format (stdoutput, bfd_object); #ifdef BFD_ASSEMBLER bfd_set_arch_mach (stdoutput, TARGET_ARCH, TARGET_MACH); @@ -69,18 +70,18 @@ output_file_close (filename) if (bfd_close (stdoutput) == 0) { bfd_perror (filename); - as_perror (_("FATAL: Can't close %s\n"), filename); + as_perror (_("FATAL: can't close %s\n"), filename); exit (EXIT_FAILURE); } #else - /* Close the bfd without getting bfd to write out anything by itself */ + /* Close the bfd without getting bfd to write out anything by itself. */ if (bfd_close_all_done (stdoutput) == 0) { - as_perror (_("FATAL: Can't close %s\n"), filename); + as_perror (_("FATAL: can't close %s\n"), filename); exit (EXIT_FAILURE); } #endif - stdoutput = NULL; /* Trust nobody! */ + stdoutput = NULL; /* Trust nobody! */ } #ifndef BFD_ASSEMBLER @@ -108,15 +109,10 @@ output_file_create (name) return; } - stdoutput = fopen (name, "wb"); - - /* Some systems don't grok "b" in fopen modes. */ - if (stdoutput == NULL) - stdoutput = fopen (name, "w"); - + stdoutput = fopen (name, FOPEN_WB); if (stdoutput == NULL) { - as_perror (_("FATAL: Can't create %s"), name); + as_perror (_("FATAL: can't create %s"), name); exit (EXIT_FAILURE); } } @@ -127,30 +123,32 @@ output_file_close (filename) { if (EOF == fclose (stdoutput)) { - as_perror (_("FATAL: Can't close %s"), filename); + as_perror (_("FATAL: can't close %s"), filename); exit (EXIT_FAILURE); } - stdoutput = NULL; /* Trust nobody! */ + + /* Trust nobody! */ + stdoutput = NULL; } void output_file_append (where, length, filename) - char *where; - long length; - char *filename; + char * where; + long length; + char * filename; { for (; length; length--, where++) { (void) putc (*where, stdoutput); + if (ferror (stdoutput)) /* if ( EOF == (putc( *where, stdoutput )) ) */ { as_perror (_("Failed to emit an object byte"), filename); - as_fatal (_("Can't continue")); + as_fatal (_("can't continue")); } } } #endif -/* end of output-file.c */ diff --git a/contrib/binutils/gas/po/POTFILES.in b/contrib/binutils/gas/po/POTFILES.in index f0a7cd6..d1d5c97 100644 --- a/contrib/binutils/gas/po/POTFILES.in +++ b/contrib/binutils/gas/po/POTFILES.in @@ -86,16 +86,24 @@ config/tc-mcore.c config/tc-mcore.h config/tc-mips.c config/tc-mips.h +config/tc-mmix.c +config/tc-mmix.h config/tc-mn10200.c config/tc-mn10200.h config/tc-mn10300.c config/tc-mn10300.h config/tc-ns32k.c config/tc-ns32k.h +config/tc-openrisc.c +config/tc-openrisc.h +config/tc-pdp11.c +config/tc-pdp11.h config/tc-pj.c config/tc-pj.h config/tc-ppc.c config/tc-ppc.h +config/tc-s390.c +config/tc-s390.h config/tc-sh.c config/tc-sh.h config/tc-sparc.c @@ -114,6 +122,8 @@ config/tc-vax.c config/tc-vax.h config/tc-w65.c config/tc-w65.h +config/tc-xstormy16.c +config/tc-xstormy16.h config/tc-z8k.c config/tc-z8k.h depend.c diff --git a/contrib/binutils/gas/po/gas.pot b/contrib/binutils/gas/po/gas.pot index 4428b64..f477568 100644 --- a/contrib/binutils/gas/po/gas.pot +++ b/contrib/binutils/gas/po/gas.pot @@ -6,84 +6,80 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2001-01-11 12:04-0800\n" +"POT-Creation-Date: 2002-01-17 12:56+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Transfer-Encoding: 8bit\n" -#: app.c:464 app.c:478 +#: app.c:476 app.c:490 msgid "end of file in comment" msgstr "" -#: app.c:557 -msgid "end of file in string: inserted '\"'" +#: app.c:569 +msgid "end of file in string; inserted '\"'" msgstr "" -#: app.c:623 +#: app.c:635 #, c-format -msgid "Unknown escape '\\%c' in string: Ignored" +msgid "unknown escape '\\%c' in string; ignored" msgstr "" -#: app.c:632 -msgid "End of file in string: '\"' inserted" +#: app.c:644 +msgid "end of file in string; '\"' inserted" msgstr "" -#: app.c:752 +#: app.c:764 msgid "end of file not at end of a line; newline inserted" msgstr "" -#: app.c:910 +#: app.c:923 msgid "end of file in multiline comment" msgstr "" -#: app.c:974 +#: app.c:987 msgid "end of file after a one-character quote; \\0 inserted" msgstr "" -#: app.c:982 +#: app.c:995 msgid "end of file in escape character" msgstr "" -#: app.c:994 -msgid "Missing close quote: (assumed)" +#: app.c:1007 +msgid "missing close quote; (assumed)" msgstr "" -#: app.c:1057 app.c:1111 app.c:1186 +#: app.c:1075 app.c:1129 app.c:1139 app.c:1204 msgid "end of file in comment; newline inserted" msgstr "" -#: app.c:1121 -msgid "EOF in Comment: Newline inserted" -msgstr "" - -#: as.c:147 +#: as.c:148 msgid "missing emulation mode name" msgstr "" -#: as.c:162 +#: as.c:163 #, c-format msgid "unrecognized emulation name `%s'" msgstr "" -#: as.c:209 +#: as.c:210 #, c-format msgid "GNU assembler version %s (%s) using BFD version %s" msgstr "" -#: as.c:212 +#: as.c:213 #, c-format msgid "GNU assembler version %s (%s)" msgstr "" -#: as.c:221 +#: as.c:222 #, c-format msgid "Usage: %s [option...] [asmfile...]\n" msgstr "" -#: as.c:223 +#: as.c:224 msgid "" "Options:\n" " -a[sub-option...]\t turn on listings\n" @@ -95,8 +91,6 @@ msgid "" " \t m include macro expansions\n" " \t n omit forms processing\n" " \t s include symbols\n" -" \t L include line debug statistics (if " -"applicable)\n" " \t =FILE list to FILE (must be last sub-option)\n" msgstr "" @@ -168,8 +162,8 @@ msgstr "" #: as.c:283 msgid "" -" -o OBJFILE name the object-file output OBJFILE (default " -"a.out)\n" +" -o OBJFILE name the object-file output OBJFILE (default a." +"out)\n" msgstr "" #: as.c:285 @@ -252,7 +246,7 @@ msgid "" " for the output data column of the listing\n" msgstr "" -#: as.c:327 gasp.c:3527 +#: as.c:327 gasp.c:3528 #, c-format msgid "Report bugs to %s\n" msgstr "" @@ -264,10 +258,10 @@ msgid "GNU assembler %s\n" msgstr "" #: as.c:528 -msgid "Copyright 2000 Free Software Foundation, Inc.\n" +msgid "Copyright 2001 Free Software Foundation, Inc.\n" msgstr "" -#: as.c:529 gasp.c:3621 +#: as.c:529 gasp.c:3627 msgid "" "This program is free software; you may redistribute it under the terms of\n" "the GNU General Public License. This program has absolutely no warranty.\n" @@ -316,35 +310,35 @@ msgid "bad defsym; format is --defsym name=value" msgstr "" #: as.c:590 -msgid "No file name following -t option\n" +msgid "no file name following -t option" msgstr "" -#: as.c:606 +#: as.c:605 #, c-format -msgid "Failed to read instruction table %s\n" +msgid "failed to read instruction table %s\n" msgstr "" -#: as.c:723 +#: as.c:720 #, c-format msgid "invalid listing option `%c'" msgstr "" -#: as.c:922 +#: as.c:928 #, c-format msgid "%d warnings, treating warnings as errors" msgstr "" -#: as.c:953 +#: as.c:959 #, c-format msgid "%s: total time in assembly: %ld.%06ld\n" msgstr "" -#: as.c:956 +#: as.c:962 #, c-format msgid "%s: data size %ld\n" msgstr "" -#: as.h:225 +#: as.h:216 #, c-format msgid "Case value %ld unexpected at line %d of file \"%s\"\n" msgstr "" @@ -353,73 +347,71 @@ msgstr "" #. * We have a GROSS internal error. #. * This should never happen. #. -#: atof-generic.c:437 config/tc-a29k.c:544 config/tc-i860.c:340 -#: config/tc-i860.c:832 config/tc-m68k.c:3176 config/tc-m68k.c:3205 -#: config/tc-sparc.c:2543 -msgid "failed sanity check." +#: atof-generic.c:437 config/tc-m68k.c:2879 +msgid "failed sanity check" msgstr "" -#: cond.c:77 +#: cond.c:79 msgid "invalid identifier for \".ifdef\"" msgstr "" -#: cond.c:131 +#: cond.c:133 msgid "non-constant expression in \".if\" statement" msgstr "" -#: cond.c:227 +#: cond.c:229 msgid "bad format for ifc or ifnc" msgstr "" -#: cond.c:261 -msgid "\".elseif\" without matching \".if\" - ignored" +#: cond.c:260 +msgid "\".elseif\" without matching \".if\"" msgstr "" -#: cond.c:266 -msgid "\".elseif\" after \".else\" - ignored" +#: cond.c:264 +msgid "\".elseif\" after \".else\"" msgstr "" -#: cond.c:269 cond.c:378 +#: cond.c:267 cond.c:375 msgid "here is the previous \"else\"" msgstr "" -#: cond.c:272 cond.c:381 +#: cond.c:270 cond.c:378 msgid "here is the previous \"if\"" msgstr "" -#: cond.c:305 +#: cond.c:299 msgid "non-constant expression in \".elseif\" statement" msgstr "" -#: cond.c:340 +#: cond.c:338 msgid "\".endif\" without \".if\"" msgstr "" -#: cond.c:370 -msgid ".else without matching .if - ignored" +#: cond.c:368 +msgid "\".else\" without matching \".if\"" msgstr "" -#: cond.c:375 -msgid "duplicate \"else\" - ignored" +#: cond.c:372 +msgid "duplicate \"else\"" msgstr "" -#: cond.c:426 +#: cond.c:424 msgid ".ifeqs syntax error" msgstr "" -#: cond.c:509 +#: cond.c:507 msgid "end of macro inside conditional" msgstr "" -#: cond.c:511 +#: cond.c:509 msgid "end of file inside conditional" msgstr "" -#: cond.c:514 +#: cond.c:512 msgid "here is the start of the unterminated conditional" msgstr "" -#: cond.c:518 +#: cond.c:516 msgid "here is the \"else\" of the unterminated conditional" msgstr "" @@ -433,17 +425,16 @@ msgstr "" msgid "Attempt to put an undefined symbol into set %s" msgstr "" -#: config/obj-aout.c:197 config/obj-coff.c:1246 config/obj-elf.c:1739 -#: ecoff.c:3647 +#: config/obj-aout.c:197 config/obj-coff.c:1274 #, c-format msgid "Symbol `%s' can not be both weak and common" msgstr "" -#: config/obj-aout.c:255 config/obj-coff.c:1982 +#: config/obj-aout.c:255 config/obj-coff.c:2010 msgid "unresolved relocation" msgstr "" -#: config/obj-aout.c:257 config/obj-coff.c:1984 +#: config/obj-aout.c:257 config/obj-coff.c:2012 #, c-format msgid "bad relocation: symbol `%s' not in symbol table" msgstr "" @@ -453,7 +444,7 @@ msgstr "" msgid "%s: bad type for weak symbol" msgstr "" -#: config/obj-aout.c:458 config/obj-coff.c:2913 write.c:1868 +#: config/obj-aout.c:458 config/obj-coff.c:2940 write.c:1933 #, c-format msgid "%s: global symbols not supported in common sections" msgstr "" @@ -467,181 +458,181 @@ msgstr "" msgid "subsegment index too high" msgstr "" -#: config/obj-bout.c:319 config/obj-vms.c:561 +#: config/obj-bout.c:319 config/obj-vms.c:562 #, c-format msgid "Local symbol %s never defined" msgstr "" -#: config/obj-coff.c:156 +#: config/obj-coff.c:166 #, c-format msgid "Inserting \"%s\" into structure table failed: %s" msgstr "" #. Zero is used as an end marker in the file. -#: config/obj-coff.c:451 +#: config/obj-coff.c:469 msgid "Line numbers must be positive integers\n" msgstr "" -#: config/obj-coff.c:484 config/obj-coff.c:2328 +#: config/obj-coff.c:503 config/obj-coff.c:2355 msgid ".ln pseudo-op inside .def/.endef: ignored." msgstr "" -#: config/obj-coff.c:527 ecoff.c:3283 +#: config/obj-coff.c:546 ecoff.c:3280 msgid ".loc outside of .text" msgstr "" -#: config/obj-coff.c:534 +#: config/obj-coff.c:553 msgid ".loc pseudo-op inside .def/.endef: ignored." msgstr "" -#: config/obj-coff.c:622 config/obj-coff.c:2385 +#: config/obj-coff.c:641 config/obj-coff.c:2412 msgid ".def pseudo-op used inside of .def/.endef: ignored." msgstr "" -#: config/obj-coff.c:668 config/obj-coff.c:2437 +#: config/obj-coff.c:687 config/obj-coff.c:2464 msgid ".endef pseudo-op used outside of .def/.endef: ignored." msgstr "" -#: config/obj-coff.c:706 +#: config/obj-coff.c:725 #, c-format msgid "`%s' symbol without preceding function" msgstr "" -#: config/obj-coff.c:793 config/obj-coff.c:2512 +#: config/obj-coff.c:812 config/obj-coff.c:2539 #, c-format msgid "unexpected storage class %d" msgstr "" -#: config/obj-coff.c:906 config/obj-coff.c:2619 +#: config/obj-coff.c:925 config/obj-coff.c:2646 msgid ".dim pseudo-op used outside of .def/.endef: ignored." msgstr "" -#: config/obj-coff.c:926 config/obj-coff.c:2639 +#: config/obj-coff.c:945 config/obj-coff.c:2666 msgid "badly formed .dim directive ignored" msgstr "" -#: config/obj-coff.c:977 config/obj-coff.c:2702 +#: config/obj-coff.c:996 config/obj-coff.c:2729 msgid ".size pseudo-op used outside of .def/.endef ignored." msgstr "" -#: config/obj-coff.c:993 config/obj-coff.c:2718 +#: config/obj-coff.c:1012 config/obj-coff.c:2745 msgid ".scl pseudo-op used outside of .def/.endef ignored." msgstr "" -#: config/obj-coff.c:1011 config/obj-coff.c:2736 +#: config/obj-coff.c:1030 config/obj-coff.c:2763 msgid ".tag pseudo-op used outside of .def/.endef ignored." msgstr "" -#: config/obj-coff.c:1030 config/obj-coff.c:2754 +#: config/obj-coff.c:1049 config/obj-coff.c:2781 #, c-format msgid "tag not found for .tag %s" msgstr "" -#: config/obj-coff.c:1045 config/obj-coff.c:2769 +#: config/obj-coff.c:1064 config/obj-coff.c:2796 msgid ".type pseudo-op used outside of .def/.endef ignored." msgstr "" -#: config/obj-coff.c:1067 config/obj-coff.c:2791 +#: config/obj-coff.c:1086 config/obj-coff.c:2818 msgid ".val pseudo-op used outside of .def/.endef ignored." msgstr "" -#: config/obj-coff.c:1207 config/obj-coff.c:2986 +#: config/obj-coff.c:1231 config/obj-coff.c:3013 msgid "mismatched .eb" msgstr "" -#: config/obj-coff.c:1225 config/obj-coff.c:3026 +#: config/obj-coff.c:1252 config/obj-coff.c:3053 msgid "C_EFCN symbol out of scope" msgstr "" #. STYP_INFO #. STYP_LIB #. STYP_OVER -#: config/obj-coff.c:1447 +#: config/obj-coff.c:1476 #, c-format msgid "unsupported section attribute '%c'" msgstr "" -#: config/obj-coff.c:1452 config/obj-coff.c:3726 config/tc-ppc.c:3925 +#: config/obj-coff.c:1481 config/obj-coff.c:3758 config/tc-ppc.c:4211 #, c-format msgid "unknown section attribute '%c'" msgstr "" -#: config/obj-coff.c:1482 config/tc-ppc.c:3943 read.c:2512 +#: config/obj-coff.c:1511 config/tc-ppc.c:4229 config/tc-tic54x.c:4130 +#: read.c:2555 #, c-format msgid "error setting flags for \"%s\": %s" msgstr "" -#: config/obj-coff.c:1493 config/obj-elf.c:723 +#: config/obj-coff.c:1522 #, c-format msgid "Ignoring changed section attributes for %s" msgstr "" -#: config/obj-coff.c:1629 +#: config/obj-coff.c:1658 #, c-format msgid "0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n" msgstr "" -#: config/obj-coff.c:1809 config/obj-ieee.c:69 +#: config/obj-coff.c:1838 config/obj-ieee.c:69 msgid "Out of step\n" msgstr "" -#: config/obj-coff.c:2244 +#: config/obj-coff.c:2271 msgid "bfd_coff_swap_scnhdr_out failed" msgstr "" -#: config/obj-coff.c:2469 +#: config/obj-coff.c:2496 msgid "`.bf' symbol without preceding function\n" msgstr "" -#: config/obj-coff.c:3422 config/obj-ieee.c:507 output-file.c:52 -#: output-file.c:119 +#: config/obj-coff.c:3450 config/obj-ieee.c:507 #, c-format msgid "FATAL: Can't create %s" msgstr "" -#: config/obj-coff.c:3600 +#: config/obj-coff.c:3632 #, c-format msgid "Can't close %s: %s" msgstr "" -#: config/obj-coff.c:3634 +#: config/obj-coff.c:3666 #, c-format msgid "Too many new sections; can't add \"%s\"" msgstr "" -#: config/obj-coff.c:4041 config/tc-m88k.c:1257 config/tc-sparc.c:3531 +#: config/obj-coff.c:4073 config/tc-sparc.c:3537 msgid "Expected comma after name" msgstr "" -#: config/obj-coff.c:4047 read.c:1956 +#: config/obj-coff.c:4079 msgid "Missing size expression" msgstr "" -#: config/obj-coff.c:4053 +#: config/obj-coff.c:4085 #, c-format msgid "lcomm length (%d.) <0! Ignored." msgstr "" -#: config/obj-coff.c:4081 read.c:2190 +#: config/obj-coff.c:4113 #, c-format msgid "Symbol %s already defined" msgstr "" -#: config/obj-coff.c:4176 config/tc-i960.c:3215 +#: config/obj-coff.c:4208 config/tc-i960.c:3206 #, c-format msgid "No 'bal' entry point for leafproc %s" msgstr "" -#: config/obj-coff.c:4255 write.c:2575 +#: config/obj-coff.c:4287 #, c-format msgid "Negative of non-absolute symbol %s" msgstr "" -#: config/obj-coff.c:4276 write.c:2589 +#: config/obj-coff.c:4308 msgid "callj to difference of 2 symbols" msgstr "" -#: config/obj-coff.c:4322 +#: config/obj-coff.c:4354 #, c-format msgid "Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld." msgstr "" @@ -649,159 +640,196 @@ msgstr "" #. This is a COBR instruction. They have only a 13-bit #. displacement and are only to be used for local branches: #. flag as error, don't generate relocation. -#: config/obj-coff.c:4411 config/tc-i960.c:3235 write.c:2733 +#: config/obj-coff.c:4443 config/tc-i960.c:3226 write.c:2826 msgid "can't use COBR format with external label" msgstr "" -#: config/obj-coff.c:4490 +#: config/obj-coff.c:4518 #, c-format msgid "Value of %ld too large for field of %d bytes at 0x%lx" msgstr "" -#: config/obj-coff.c:4504 write.c:2823 +#: config/obj-coff.c:4532 #, c-format msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx" msgstr "" -#: config/obj-ecoff.c:241 +#: config/obj-ecoff.c:227 msgid "Can't set GP value" msgstr "" -#: config/obj-ecoff.c:248 +#: config/obj-ecoff.c:234 msgid "Can't set register masks" msgstr "" -#: config/obj-elf.c:308 config/tc-sparc.c:3674 config/tc-v850.c:259 -msgid "Expected comma after symbol-name" +#: config/obj-elf.c:308 +msgid "expected comma after symbol-name" msgstr "" -#: config/obj-elf.c:315 config/tc-sparc.c:3684 +#: config/obj-elf.c:315 config/tc-sparc.c:3690 #, c-format msgid ".COMMon length (%d.) <0! Ignored." msgstr "" -#: config/obj-elf.c:325 config/tc-alpha.c:4335 config/tc-sparc.c:3694 -#: config/tc-v850.c:282 -msgid "Ignoring attempt to re-define symbol" +#: config/obj-elf.c:325 ecoff.c:3399 read.c:1403 read.c:1504 read.c:2137 +#: read.c:2226 read.c:2856 read.c:4937 symbols.c:361 symbols.c:460 +#, c-format +msgid "symbol `%s' is already defined" msgstr "" -#: config/obj-elf.c:333 config/tc-sparc.c:3702 config/tc-v850.c:292 +#: config/obj-elf.c:333 #, c-format -msgid "Length of .comm \"%s\" is already %ld. Not changed to %d." +msgid "length of .comm \"%s\" is already %ld; not changed to %d" msgstr "" -#: config/obj-elf.c:356 config/tc-v850.c:319 -msgid "Common alignment negative; 0 assumed" +#: config/obj-elf.c:356 +msgid "common alignment negative; 0 assumed" msgstr "" -#: config/obj-elf.c:375 config/tc-m32r.c:1286 config/tc-ppc.c:1518 -#: config/tc-v850.c:382 -msgid "Common alignment not a power of 2" +#: config/obj-elf.c:375 +msgid "common alignment not a power of 2" msgstr "" -#: config/obj-elf.c:438 config/tc-sparc.c:3826 config/tc-v850.c:564 +#: config/obj-elf.c:438 config/tc-sparc.c:3832 config/tc-v850.c:565 #, c-format msgid "bad .common segment %s" msgstr "" -#: config/obj-elf.c:664 +#: config/obj-elf.c:668 #, c-format -msgid "Setting incorrect section type for %s" +msgid "setting incorrect section type for %s" msgstr "" -#: config/obj-elf.c:668 +#: config/obj-elf.c:672 +#, c-format +msgid "ignoring incorrect section type for %s" +msgstr "" + +#: config/obj-elf.c:685 +#, c-format +msgid "setting incorrect section attributes for %s" +msgstr "" + +#: config/obj-elf.c:732 +#, c-format +msgid "ignoring changed section attributes for %s" +msgstr "" + +#: config/obj-elf.c:734 #, c-format -msgid "Ignoring incorrect section type for %s" +msgid "ignoring changed section entity size for %s" msgstr "" -#: config/obj-elf.c:681 +#: config/obj-elf.c:737 #, c-format -msgid "Setting incorrect section attributes for %s" +msgid "ignoring new section group for %s" msgstr "" -#: config/obj-elf.c:753 -msgid "Unrecognized .section attribute: want a,w,x" +#: config/obj-elf.c:788 +msgid "unrecognized .section attribute: want a,w,x,M,S,G" msgstr "" -#: config/obj-elf.c:793 -msgid "Unrecognized section attribute" +#: config/obj-elf.c:828 +msgid "unrecognized section attribute" msgstr "" -#: config/obj-elf.c:815 -msgid "Unrecognized section type" +#: config/obj-elf.c:850 read.c:2538 +msgid "unrecognized section type" msgstr "" -#: config/obj-elf.c:866 -msgid "Missing section name" +#: config/obj-elf.c:880 +msgid "missing name" msgstr "" -#: config/obj-elf.c:932 -msgid "Bad .section directive - character following name is not '#'" +#: config/obj-elf.c:987 +msgid "invalid merge entity size" msgstr "" -#: config/obj-elf.c:1033 +#: config/obj-elf.c:994 +msgid "entity size for SHF_MERGE not specified" +msgstr "" + +#: config/obj-elf.c:1007 +msgid "group name for SHF_GROUP not specified" +msgstr "" + +#: config/obj-elf.c:1020 +msgid "character following name is not '#'" +msgstr "" + +#: config/obj-elf.c:1121 msgid ".previous without corresponding .section; ignored" msgstr "" -#: config/obj-elf.c:1060 +#: config/obj-elf.c:1148 msgid ".popsection without corresponding .pushsection; ignored" msgstr "" -#: config/obj-elf.c:1113 +#: config/obj-elf.c:1202 msgid "expected comma after name in .symver" msgstr "" -#: config/obj-elf.c:1137 +#: config/obj-elf.c:1225 #, c-format msgid "missing version name in `%s' for symbol `%s'" msgstr "" -#: config/obj-elf.c:1148 +#: config/obj-elf.c:1236 #, c-format msgid "multiple versions [`%s'|`%s'] for symbol `%s'" msgstr "" -#: config/obj-elf.c:1361 config/obj-som.c:155 config/obj-som.c:201 -msgid "Expected quoted string" +#: config/obj-elf.c:1470 +msgid "expected quoted string" msgstr "" -#: config/obj-elf.c:1382 +#: config/obj-elf.c:1491 #, c-format msgid "expected comma after name `%s' in .size directive" msgstr "" -#: config/obj-elf.c:1391 +#: config/obj-elf.c:1500 msgid "missing expression in .size directive" msgstr "" -#: config/obj-elf.c:1467 +#: config/obj-elf.c:1583 #, c-format -msgid "ignoring unrecognized symbol type \"%s\"" +msgid "unrecognized symbol type \"%s\"" msgstr "" -#: config/obj-elf.c:1648 +#: config/obj-elf.c:1764 msgid ".size expression too complicated to fix up" msgstr "" -#: config/obj-elf.c:1680 +#: config/obj-elf.c:1796 #, c-format msgid "" "invalid attempt to declare external version name as default in symbol `%s'" msgstr "" -#: config/obj-elf.c:1862 +#: config/obj-elf.c:1855 ecoff.c:3644 +#, c-format +msgid "symbol `%s' can not be both weak and common" +msgstr "" + +#: config/obj-elf.c:1971 +#, c-format +msgid "can't create group: %s" +msgstr "" + +#: config/obj-elf.c:2068 #, c-format -msgid "Failed to set up debugging information: %s" +msgid "failed to set up debugging information: %s" msgstr "" -#: config/obj-elf.c:1882 +#: config/obj-elf.c:2088 #, c-format -msgid "Can't start writing .mdebug section: %s" +msgid "can't start writing .mdebug section: %s" msgstr "" -#: config/obj-elf.c:1890 +#: config/obj-elf.c:2096 #, c-format -msgid "Could not write .mdebug section: %s" +msgid "could not write .mdebug section: %s" msgstr "" #: config/obj-ieee.c:455 @@ -812,6 +840,10 @@ msgstr "" msgid "Only one .version pseudo-op per file!" msgstr "" +#: config/obj-som.c:155 config/obj-som.c:201 +msgid "Expected quoted string" +msgstr "" + #: config/obj-som.c:164 #, c-format msgid "FATAL: Attaching version header %s" @@ -826,44 +858,45 @@ msgstr "" msgid "FATAL: Attaching copyright header %s" msgstr "" -#: config/obj-vms.c:462 +#: config/obj-vms.c:463 #, c-format msgid "compiler emitted zero-size common symbol `%s' already defined" msgstr "" -#: config/obj-vms.c:472 +#: config/obj-vms.c:473 #, c-format msgid "compiler redefined zero-size common symbol `%s'" msgstr "" -#: config/obj-vms.c:591 +#: config/obj-vms.c:592 #, c-format msgid "Couldn't create VMS object file \"%s\"" msgstr "" -#: config/obj-vms.c:616 +#: config/obj-vms.c:617 msgid "I/O error writing VMS object file (length prefix)" msgstr "" -#: config/obj-vms.c:630 +#: config/obj-vms.c:631 msgid "I/O error writing VMS object file" msgstr "" -#: config/obj-vms.c:1220 +#: config/obj-vms.c:1221 +#, c-format msgid "Couldn't find source file \"%s\", status=%%X%x" msgstr "" -#: config/obj-vms.c:1718 config/obj-vms.c:2894 +#: config/obj-vms.c:1719 config/obj-vms.c:2895 #, c-format msgid "debugger forward reference error, dbx type %d" msgstr "" -#: config/obj-vms.c:1793 +#: config/obj-vms.c:1794 #, c-format msgid "Variable descriptor %d too complicated. Defined as `void *'." msgstr "" -#: config/obj-vms.c:2107 +#: config/obj-vms.c:2108 msgid "" "***Warning - the assembly code generated by the compiler has placed \n" " global constant(s) in the text psect. These will not be available to \n" @@ -874,92 +907,92 @@ msgid "" " I didn't warn you! \n" msgstr "" -#: config/obj-vms.c:2421 +#: config/obj-vms.c:2422 #, c-format msgid "debugginer output: %d is an unknown untyped variable." msgstr "" -#: config/obj-vms.c:2639 +#: config/obj-vms.c:2640 #, c-format msgid "debugger output: structure element `%s' has undefined type" msgstr "" -#: config/obj-vms.c:2750 +#: config/obj-vms.c:2751 #, c-format msgid "debugger output: %d is an unknown type of variable." msgstr "" -#: config/obj-vms.c:2883 +#: config/obj-vms.c:2884 #, c-format msgid "debugger output: Unable to resolve %d circular references." msgstr "" -#: config/obj-vms.c:3085 +#: config/obj-vms.c:3086 #, c-format msgid "Module name truncated: %s\n" msgstr "" -#: config/obj-vms.c:3363 +#: config/obj-vms.c:3364 #, c-format msgid "Symbol %s replaced by %s\n" msgstr "" #. impossible -#: config/obj-vms.c:3646 +#: config/obj-vms.c:3647 #, c-format msgid "Unknown VMS psect type (%ld)" msgstr "" -#: config/obj-vms.c:3687 +#: config/obj-vms.c:3688 #, c-format msgid "Globalsymbol attribute for symbol %s was unexpected." msgstr "" -#: config/obj-vms.c:3836 +#: config/obj-vms.c:3837 msgid "Invalid data type for globalvalue" msgstr "" -#: config/obj-vms.c:3848 +#: config/obj-vms.c:3849 #, c-format msgid "Invalid globalvalue of %s" msgstr "" -#: config/obj-vms.c:4198 +#: config/obj-vms.c:4199 msgid "Couldn't find fixup fragment when checking for indirect reference" msgstr "" -#: config/obj-vms.c:4541 config/obj-vms.c:4682 +#: config/obj-vms.c:4542 config/obj-vms.c:4683 msgid "Fixup data addsy and subsy don't have the same type" msgstr "" -#: config/obj-vms.c:4545 config/obj-vms.c:4686 +#: config/obj-vms.c:4546 config/obj-vms.c:4687 msgid "Fixup data addsy and subsy don't have an appropriate type" msgstr "" -#: config/obj-vms.c:4548 config/obj-vms.c:4689 +#: config/obj-vms.c:4549 config/obj-vms.c:4690 msgid "Fixup data is erroneously \"pcrel\"" msgstr "" -#: config/obj-vms.c:4564 config/obj-vms.c:4708 +#: config/obj-vms.c:4565 config/obj-vms.c:4709 msgid "Fixup datum is not a longword" msgstr "" -#: config/obj-vms.c:4568 config/obj-vms.c:4712 +#: config/obj-vms.c:4569 config/obj-vms.c:4713 msgid "Fixup datum is not \"fixP->fx_addsy\"" msgstr "" -#: config/obj-vms.c:4783 +#: config/obj-vms.c:4784 #, c-format msgid "" "g++ wrote an extern reference to `%s' as a routine.\n" "I will fix it, but I hope that it was note really a routine." msgstr "" -#: config/obj-vms.c:4915 +#: config/obj-vms.c:4916 msgid "Can't handle global xtors symbols yet." msgstr "" -#: config/obj-vms.c:4918 +#: config/obj-vms.c:4919 #, c-format msgid "Unknown %s" msgstr "" @@ -967,109 +1000,116 @@ msgstr "" #. #. * Error otherwise. #. -#: config/obj-vms.c:5003 +#: config/obj-vms.c:5004 #, c-format msgid "unhandled stab type %d" msgstr "" -#: config/tc-a29k.c:160 config/tc-sparc.c:3878 +#: config/tc-a29k.c:160 config/tc-sparc.c:3884 msgid "Unknown segment type" msgstr "" #. Probably a memory allocation problem? Give up now. -#: config/tc-a29k.c:330 config/tc-hppa.c:1412 config/tc-mips.c:1030 -#: config/tc-mips.c:1072 config/tc-sparc.c:846 +#: config/tc-a29k.c:330 config/tc-hppa.c:1462 config/tc-mips.c:1251 +#: config/tc-mips.c:1293 config/tc-sparc.c:847 msgid "Broken assembler. No assembly attempted." msgstr "" -#: config/tc-a29k.c:375 config/tc-avr.c:1124 config/tc-d10v.c:532 -#: config/tc-d30v.c:552 config/tc-h8300.c:296 config/tc-h8500.c:294 -#: config/tc-mcore.c:655 config/tc-mn10200.c:954 config/tc-mn10300.c:1335 -#: config/tc-ppc.c:1974 config/tc-sh.c:838 config/tc-tic80.c:282 -#: config/tc-v850.c:2076 config/tc-w65.c:248 config/tc-z8k.c:336 +#: config/tc-a29k.c:375 config/tc-avr.c:1131 config/tc-d10v.c:540 +#: config/tc-d30v.c:552 config/tc-h8300.c:313 config/tc-h8500.c:284 +#: config/tc-mcore.c:655 config/tc-mmix.c:468 config/tc-mn10200.c:940 +#: config/tc-mn10300.c:1311 config/tc-ppc.c:2106 config/tc-s390.c:1054 +#: config/tc-sh.c:869 config/tc-tic80.c:283 config/tc-v850.c:2073 +#: config/tc-w65.c:241 config/tc-z8k.c:343 msgid "missing operand" msgstr "" -#: config/tc-a29k.c:415 config/tc-cris.c:913 config/tc-cris.c:921 -#: config/tc-hppa.c:1545 config/tc-i860.c:431 config/tc-i860.c:448 -#: config/tc-sparc.c:1408 config/tc-sparc.c:1414 +#: config/tc-a29k.c:414 config/tc-cris.c:950 config/tc-cris.c:958 +#: config/tc-hppa.c:1598 config/tc-i860.c:431 config/tc-i860.c:448 +#: config/tc-sparc.c:1409 config/tc-sparc.c:1415 #, c-format msgid "Unknown opcode: `%s'" msgstr "" -#: config/tc-a29k.c:420 +#: config/tc-a29k.c:419 #, c-format msgid "Unknown opcode `%s'." msgstr "" -#: config/tc-a29k.c:452 +#: config/tc-a29k.c:451 #, c-format msgid "Too many operands: %s" msgstr "" -#: config/tc-a29k.c:474 config/tc-a29k.c:505 +#: config/tc-a29k.c:473 config/tc-a29k.c:504 #, c-format msgid "Immediate value of %ld is too large" msgstr "" -#: config/tc-a29k.c:890 +#: config/tc-a29k.c:543 config/tc-i860.c:340 config/tc-i860.c:832 +#: config/tc-m68k.c:3181 config/tc-m68k.c:3210 config/tc-sparc.c:2544 +msgid "failed sanity check." +msgstr "" + +#: config/tc-a29k.c:889 #, c-format msgid "bad relocation type: 0x%02x" msgstr "" -#: config/tc-a29k.c:914 +#: config/tc-a29k.c:916 #, c-format msgid "need %o3\n" msgstr "" -#: config/tc-a29k.c:930 +#: config/tc-a29k.c:932 msgid "a29k_convert_frag\n" msgstr "" -#: config/tc-a29k.c:939 +#: config/tc-a29k.c:941 msgid "a29k_estimate_size_before_relax\n" msgstr "" -#: config/tc-a29k.c:1090 +#: config/tc-a29k.c:1092 #, c-format msgid "label \"$%d\" redefined" msgstr "" -#: config/tc-a29k.c:1163 +#: config/tc-a29k.c:1165 +#, c-format msgid "Invalid expression after %%%%\n" msgstr "" -#: config/tc-a29k.c:1174 +#: config/tc-a29k.c:1176 msgid "Invalid register in & expression" msgstr "" -#: config/tc-alpha.c:837 +#: config/tc-alpha.c:789 #, c-format msgid "internal error: can't hash opcode `%s': %s" msgstr "" -#: config/tc-alpha.c:871 +#: config/tc-alpha.c:824 #, c-format msgid "internal error: can't hash macro `%s': %s" msgstr "" -#: config/tc-alpha.c:954 config/tc-i960.c:2700 +#: config/tc-alpha.c:906 config/tc-i960.c:2701 msgid "syntax error" msgstr "" -#: config/tc-alpha.c:1028 config/tc-arm.c:6629 config/tc-h8300.c:1373 -#: config/tc-h8500.c:1197 config/tc-hppa.c:3939 config/tc-i860.c:931 -#: config/tc-m68hc11.c:478 config/tc-m68k.c:4179 config/tc-m88k.c:1105 -#: config/tc-ns32k.c:1663 config/tc-sparc.c:2830 config/tc-z8k.c:1324 +#: config/tc-alpha.c:980 config/tc-h8300.c:1413 config/tc-h8500.c:1187 +#: config/tc-hppa.c:4017 config/tc-i860.c:931 config/tc-m68hc11.c:500 +#: config/tc-m68k.c:4201 config/tc-m88k.c:1011 config/tc-ns32k.c:1663 +#: config/tc-sparc.c:2831 config/tc-z8k.c:1321 msgid "Bad call to MD_ATOF()" msgstr "" -#: config/tc-alpha.c:1078 +#: config/tc-alpha.c:1030 #, c-format msgid "Unknown CPU identifier `%s'" msgstr "" -#: config/tc-alpha.c:1122 +#: config/tc-alpha.c:1074 msgid "" "Alpha options:\n" "-32addr\t\t\ttreat addresses as 32-bit values\n" @@ -1080,952 +1120,1046 @@ msgid "" "\t\t\tthese variants include PALcode opcodes\n" msgstr "" -#: config/tc-alpha.c:1132 +#: config/tc-alpha.c:1084 msgid "" "VMS options:\n" "-+\t\t\thash encode (don't truncate) names longer than 64 characters\n" "-H\t\t\tshow new symbol after hash truncation\n" msgstr "" -#: config/tc-alpha.c:1305 +#: config/tc-alpha.c:1242 #, c-format msgid "unhandled relocation type %s" msgstr "" -#: config/tc-alpha.c:1318 +#: config/tc-alpha.c:1255 msgid "non-absolute expression in constant field" msgstr "" -#: config/tc-alpha.c:1332 +#: config/tc-alpha.c:1269 #, c-format msgid "type %d reloc done?\n" msgstr "" -#: config/tc-alpha.c:1383 config/tc-alpha.c:1390 config/tc-mips.c:7356 +#: config/tc-alpha.c:1317 config/tc-alpha.c:1324 config/tc-mips.c:7965 msgid "Used $at without \".set noat\"" msgstr "" -#: config/tc-alpha.c:1572 +#: config/tc-alpha.c:1481 #, c-format msgid "cannot represent `%s' relocation in object file" msgstr "" -#: config/tc-alpha.c:1579 +#: config/tc-alpha.c:1488 #, c-format msgid "internal error? cannot generate `%s' relocation" msgstr "" -#: config/tc-alpha.c:1633 +#: config/tc-alpha.c:1543 #, c-format msgid "frame reg expected, using $%d." msgstr "" -#: config/tc-alpha.c:1758 +#: config/tc-alpha.c:1646 #, c-format -msgid "No !literal!%d was found" +msgid "No !literal!%ld was found" +msgstr "" + +#: config/tc-alpha.c:1654 +#, c-format +msgid "No ldah !gpdisp!%ld was found" +msgstr "" + +#: config/tc-alpha.c:1705 +#, c-format +msgid "No lda !gpdisp!%ld was found" msgstr "" #. only support one relocation op per insn -#: config/tc-alpha.c:1946 +#: config/tc-alpha.c:1841 msgid "More than one relocation op per insn" msgstr "" -#: config/tc-alpha.c:1963 +#: config/tc-alpha.c:1857 msgid "No relocation operand" msgstr "" -#: config/tc-alpha.c:1969 +#: config/tc-alpha.c:1867 #, c-format -msgid "No !sequence-number after !%s" +msgid "Unknown relocation operand: !%s" msgstr "" -#: config/tc-alpha.c:1982 +#: config/tc-alpha.c:1877 #, c-format -msgid "Unknown relocation operand: !%s" +msgid "no sequence number after !%s" msgstr "" -#: config/tc-alpha.c:1995 +#: config/tc-alpha.c:1887 +#, c-format +msgid "!%s does not use a sequence number" +msgstr "" + +#: config/tc-alpha.c:1897 #, c-format msgid "Bad sequence number: !%s!%s" msgstr "" -#: config/tc-alpha.c:2346 +#: config/tc-alpha.c:2224 #, c-format msgid "operand out of range (%s not between %d and %d)" msgstr "" -#: config/tc-alpha.c:2445 config/tc-d10v.c:621 config/tc-d30v.c:640 -#: config/tc-mn10200.c:1009 config/tc-mn10300.c:1406 config/tc-ppc.c:1940 -#: config/tc-ppc.c:2048 config/tc-ppc.c:2060 config/tc-v850.c:1856 -#: config/tc-v850.c:1879 config/tc-v850.c:2099 +#: config/tc-alpha.c:2338 config/tc-alpha.c:2362 config/tc-d10v.c:629 +#: config/tc-d30v.c:640 config/tc-mn10200.c:995 config/tc-mn10300.c:1382 +#: config/tc-ppc.c:2072 config/tc-ppc.c:2256 config/tc-ppc.c:2268 +#: config/tc-s390.c:1064 config/tc-s390.c:1121 config/tc-v850.c:1853 +#: config/tc-v850.c:1876 config/tc-v850.c:2096 msgid "too many fixups" msgstr "" -#: config/tc-alpha.c:2660 config/tc-alpha.c:2729 +#: config/tc-alpha.c:2374 +msgid "invalid relocation for instruction" +msgstr "" + +#: config/tc-alpha.c:2385 +msgid "invalid relocation for field" +msgstr "" + +#: config/tc-alpha.c:2484 #, c-format -msgid "inappropriate arguments for opcode `%s'" +msgid "too many ldah insns for !gpdisp!%ld" msgstr "" -#: config/tc-alpha.c:2662 config/tc-alpha.c:2731 +#: config/tc-alpha.c:2486 config/tc-alpha.c:2498 #, c-format -msgid "opcode `%s' not supported for target %s" +msgid "both insns for !gpdisp!%ld must be in the same section" msgstr "" -#: config/tc-alpha.c:2666 config/tc-alpha.c:2734 config/tc-avr.c:1090 +#: config/tc-alpha.c:2496 #, c-format -msgid "unknown opcode `%s'" +msgid "too many lda insns for !gpdisp!%ld" +msgstr "" + +#: config/tc-alpha.c:2577 config/tc-alpha.c:2647 +#, c-format +msgid "inappropriate arguments for opcode `%s'" +msgstr "" + +#: config/tc-alpha.c:2579 config/tc-alpha.c:2649 +#, c-format +msgid "opcode `%s' not supported for target %s" msgstr "" -#: config/tc-alpha.c:2706 config/tc-alpha.c:2773 config/tc-alpha.c:3284 -#: config/tc-alpha.c:3344 config/tc-alpha.c:3396 config/tc-alpha.c:3471 -#: config/tc-alpha.c:3556 config/tc-alpha.c:3682 config/tc-alpha.c:3859 -#: config/tc-alpha.c:3916 config/tc-alpha.c:4026 config/tc-alpha.c:4133 -#: config/tc-alpha.c:4210 +#: config/tc-alpha.c:2583 config/tc-alpha.c:2653 config/tc-avr.c:1097 #, c-format -msgid "Cannot use !%s!%d with %s" +msgid "unknown opcode `%s'" msgstr "" -#: config/tc-alpha.c:2794 +#: config/tc-alpha.c:2701 msgid "can not resolve expression" msgstr "" -#: config/tc-alpha.c:2936 config/tc-alpha.c:3128 +#: config/tc-alpha.c:2845 config/tc-alpha.c:3024 msgid "overflow in literal (.lita) table" msgstr "" -#: config/tc-alpha.c:2943 config/tc-alpha.c:2966 config/tc-alpha.c:3141 -#: config/tc-alpha.c:3485 config/tc-alpha.c:3563 config/tc-alpha.c:3611 -#: config/tc-alpha.c:3711 config/tc-alpha.c:3936 config/tc-alpha.c:4048 +#: config/tc-alpha.c:2852 config/tc-alpha.c:2875 config/tc-alpha.c:3037 +#: config/tc-alpha.c:3252 config/tc-alpha.c:3297 config/tc-alpha.c:3371 +#: config/tc-alpha.c:3463 config/tc-alpha.c:3712 config/tc-alpha.c:3813 msgid "macro requires $at register while noat in effect" msgstr "" -#: config/tc-alpha.c:2945 config/tc-alpha.c:2968 config/tc-alpha.c:3143 +#: config/tc-alpha.c:2854 config/tc-alpha.c:2877 config/tc-alpha.c:3039 msgid "macro requires $at while $at in use" msgstr "" -#: config/tc-alpha.c:3090 expr.c:83 read.c:3164 +#: config/tc-alpha.c:2985 msgid "bignum invalid; zero assumed" msgstr "" -#: config/tc-alpha.c:3092 expr.c:85 read.c:3166 read.c:3499 read.c:4397 +#: config/tc-alpha.c:2987 msgid "floating point number invalid; zero assumed" msgstr "" -#: config/tc-alpha.c:3097 +#: config/tc-alpha.c:2992 msgid "can't handle expression" msgstr "" -#: config/tc-alpha.c:3134 +#: config/tc-alpha.c:3030 msgid "overflow in literal (.lit8) table" msgstr "" -#: config/tc-alpha.c:3306 +#: config/tc-alpha.c:4042 config/tc-ppc.c:1579 config/tc-ppc.c:3974 #, c-format -msgid "bad instruction format for lda !%s!%ld" +msgid ".COMMon length (%ld.) <0! Ignored." msgstr "" -#: config/tc-alpha.c:4306 config/tc-ppc.c:1467 config/tc-ppc.c:3689 -#: read.c:1369 -#, c-format -msgid ".COMMon length (%ld.) <0! Ignored." +#: config/tc-alpha.c:4071 config/tc-sparc.c:3700 config/tc-v850.c:283 +msgid "Ignoring attempt to re-define symbol" msgstr "" -#: config/tc-alpha.c:4344 config/tc-alpha.c:4353 config/tc-ppc.c:3726 -#: read.c:1393 +#: config/tc-alpha.c:4080 config/tc-alpha.c:4089 config/tc-ppc.c:4011 #, c-format msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld." msgstr "" -#: config/tc-alpha.c:4455 ecoff.c:3087 +#: config/tc-alpha.c:4191 ecoff.c:3084 msgid ".ent directive has no name" msgstr "" -#: config/tc-alpha.c:4463 +#: config/tc-alpha.c:4199 msgid "nested .ent directives" msgstr "" -#: config/tc-alpha.c:4499 ecoff.c:3035 +#: config/tc-alpha.c:4235 ecoff.c:3034 msgid ".end directive has no name" msgstr "" -#: config/tc-alpha.c:4508 +#: config/tc-alpha.c:4244 msgid ".end directive names different symbol than .ent" msgstr "" -#: config/tc-alpha.c:4585 +#: config/tc-alpha.c:4321 #, c-format msgid "Invalid argument %d to .prologue." msgstr "" -#: config/tc-alpha.c:4677 +#: config/tc-alpha.c:4413 msgid "ECOFF debugging is disabled." msgstr "" -#: config/tc-alpha.c:4698 +#: config/tc-alpha.c:4434 msgid "Unknown section directive" msgstr "" -#: config/tc-alpha.c:4734 +#: config/tc-alpha.c:4470 msgid ".ent directive has no symbol" msgstr "" -#: config/tc-alpha.c:4761 +#: config/tc-alpha.c:4497 msgid "Bad .frame directive 1./2. param" msgstr "" -#: config/tc-alpha.c:4773 +#: config/tc-alpha.c:4509 msgid "Bad .frame directive 3./4. param" msgstr "" -#: config/tc-alpha.c:4798 +#: config/tc-alpha.c:4534 msgid ".pdesc directive not in link (.link) section" msgstr "" -#: config/tc-alpha.c:4806 +#: config/tc-alpha.c:4542 msgid ".pdesc has no matching .ent" msgstr "" -#: config/tc-alpha.c:4817 +#: config/tc-alpha.c:4553 msgid ".pdesc directive has no entry symbol" msgstr "" -#: config/tc-alpha.c:4830 +#: config/tc-alpha.c:4566 msgid "No comma after .pdesc <entryname>" msgstr "" -#: config/tc-alpha.c:4853 +#: config/tc-alpha.c:4589 msgid "unknown procedure kind" msgstr "" -#: config/tc-alpha.c:4947 +#: config/tc-alpha.c:4682 msgid ".name directive not in link (.link) section" msgstr "" -#: config/tc-alpha.c:4955 +#: config/tc-alpha.c:4690 msgid ".name directive has no symbol" msgstr "" -#: config/tc-alpha.c:4989 +#: config/tc-alpha.c:4724 msgid "No symbol after .linkage" msgstr "" -#: config/tc-alpha.c:5017 +#: config/tc-alpha.c:4752 msgid "No symbol after .code_address" msgstr "" -#: config/tc-alpha.c:5050 ecoff.c:3253 +#: config/tc-alpha.c:4785 msgid "Bad .mask directive" msgstr "" -#: config/tc-alpha.c:5071 ecoff.c:3183 +#: config/tc-alpha.c:4806 msgid "Bad .fmask directive" msgstr "" -#: config/tc-alpha.c:5241 config/tc-arm.c:1593 read.c:2150 read.c:2737 -#: stabs.c:464 +#: config/tc-alpha.c:4976 #, c-format msgid "Expected comma after name \"%s\"" msgstr "" #. *symbol_get_obj (symbolP) = (signed char) temp; -#: config/tc-alpha.c:5252 +#: config/tc-alpha.c:4987 #, c-format msgid "unhandled: .proc %s,%d" msgstr "" -#: config/tc-alpha.c:5287 +#: config/tc-alpha.c:5022 #, c-format msgid "Tried to .set unrecognized mode `%s'" msgstr "" #. not fatal, but it might not work in the end -#: config/tc-alpha.c:5304 +#: config/tc-alpha.c:5039 msgid "File overrides no-base-register option." msgstr "" -#: config/tc-alpha.c:5321 +#: config/tc-alpha.c:5056 #, c-format msgid "Bad base register, using $%d." msgstr "" -#: config/tc-alpha.c:5343 +#: config/tc-alpha.c:5078 #, c-format msgid "Alignment too large: %d. assumed" msgstr "" -#: config/tc-alpha.c:5347 config/tc-d30v.c:2219 +#: config/tc-alpha.c:5082 config/tc-d30v.c:2214 msgid "Alignment negative: 0 assumed" msgstr "" -#: config/tc-alpha.c:5662 +#: config/tc-alpha.c:5394 #, c-format msgid "Chose GP value of %lx\n" msgstr "" -#: config/tc-arc.c:1618 config/tc-arm.c:7532 +#: config/tc-alpha.c:5410 config/tc-ia64.c:932 +msgid "Bad .section directive: want a,s,w,x,M,S in string" +msgstr "" + +#: config/tc-arc.c:1616 config/tc-arm.c:10246 msgid "md_estimate_size_before_relax\n" msgstr "" -#: config/tc-arc.c:1630 +#: config/tc-arc.c:1628 msgid "md_convert_frag\n" msgstr "" -#: config/tc-arm.c:1156 -msgid "Bad arguments to instruction" +#: config/tc-arm.c:664 +msgid "ARM register expected" msgstr "" -#: config/tc-arm.c:1157 -msgid "r15 not allowed here" +#: config/tc-arm.c:665 config/tc-arm.c:2814 +msgid "bad or missing co-processor number" +msgstr "" + +#. In the few cases where we might be able to accept something else +#. this error can be overridden. +#: config/tc-arm.c:666 config/tc-arm.c:2869 +msgid "co-processor register expected" +msgstr "" + +#: config/tc-arm.c:667 +msgid "FPA register expected" +msgstr "" + +#: config/tc-arm.c:668 +msgid "VFP single precision register expected" +msgstr "" + +#: config/tc-arm.c:669 +msgid "VFP double precision register expected" +msgstr "" + +#: config/tc-arm.c:670 +msgid "Maverick MVF register expected" +msgstr "" + +#: config/tc-arm.c:671 +msgid "Maverick MVD register expected" msgstr "" -#: config/tc-arm.c:1158 -msgid "Instruction should not have flags" +#: config/tc-arm.c:672 config/tc-arm.c:673 +msgid "Maverick MVFX register expected" msgstr "" -#: config/tc-arm.c:1159 -msgid "Instruction is not conditional" +#: config/tc-arm.c:674 +msgid "Maverick MVAX register expected" msgstr "" -#: config/tc-arm.c:1160 +#: config/tc-arm.c:675 +msgid "Maverick DSPSC register expected" +msgstr "" + +#: config/tc-arm.c:2013 +msgid "bad arguments to instruction" +msgstr "" + +#: config/tc-arm.c:2014 +msgid "r15 not allowed here" +msgstr "" + +#: config/tc-arm.c:2015 +msgid "instruction is not conditional" +msgstr "" + +#: config/tc-arm.c:2016 msgid "acc0 expected" msgstr "" -#: config/tc-arm.c:1289 -msgid "Literal Pool Overflow" +#: config/tc-arm.c:2155 +msgid "literal pool overflow" msgstr "" -#: config/tc-arm.c:1431 -msgid "Invalid syntax for .req directive." +#: config/tc-arm.c:2297 +msgid "invalid syntax for .req directive" msgstr "" -#: config/tc-arm.c:1506 config/tc-mips.c:9916 read.c:2035 +#: config/tc-arm.c:2372 #, c-format -msgid "Alignment too large: %d. assumed." +msgid "alignment too large: %d assumed" msgstr "" -#: config/tc-arm.c:1509 read.c:2040 -msgid "Alignment negative. 0 assumed." +#: config/tc-arm.c:2375 +msgid "alignment negative. 0 assumed." +msgstr "" + +#: config/tc-arm.c:2459 +#, c-format +msgid "expected comma after name \"%s\"" msgstr "" -#: config/tc-arm.c:1643 config/tc-m32r.c:417 read.c:2795 read.c:4857 +#: config/tc-arm.c:2509 config/tc-m32r.c:418 #, c-format msgid "symbol `%s' already defined" msgstr "" -#: config/tc-arm.c:1714 +#: config/tc-arm.c:2580 msgid "selected processor does not support THUMB opcodes" msgstr "" -#: config/tc-arm.c:1727 +#: config/tc-arm.c:2593 msgid "selected processor does not support ARM opcodes" msgstr "" -#: config/tc-arm.c:1739 +#: config/tc-arm.c:2605 #, c-format msgid "invalid instruction size selected (%d)" msgstr "" -#: config/tc-arm.c:1774 +#: config/tc-arm.c:2640 #, c-format msgid "invalid operand to .code directive (%d) (expecting 16 or 32)" msgstr "" -#: config/tc-arm.c:1785 -msgid "Garbage following instruction" +#: config/tc-arm.c:2651 +msgid "garbage following instruction" msgstr "" #. In the few cases where we might be able to accept something else #. this error can be overridden. -#: config/tc-arm.c:1835 +#: config/tc-arm.c:2701 #, c-format -msgid "Register expected, not '%.100s'" +msgid "register expected, not '%.100s'" msgstr "" #. In the few cases where we might be able to accept #. something else this error can be overridden. -#: config/tc-arm.c:1907 +#: config/tc-arm.c:2773 msgid "flag for {c}psr instruction expected" msgstr "" -#: config/tc-arm.c:1937 -msgid "Illegal co-processor number" +#: config/tc-arm.c:2807 +msgid "illegal co-processor number" msgstr "" -#: config/tc-arm.c:1944 -msgid "Bad or missing co-processor number" -msgstr "" - -#: config/tc-arm.c:1968 config/tc-arm.c:3054 config/tc-arm.c:3246 +#: config/tc-arm.c:2839 config/tc-arm.c:3877 config/tc-arm.c:4059 msgid "bad or missing expression" msgstr "" -#: config/tc-arm.c:1974 +#: config/tc-arm.c:2845 msgid "immediate co-processor expression too large" msgstr "" #. In the few cases where we might be able to accept something else #. this error can be overridden. -#: config/tc-arm.c:1999 -msgid "Co-processor register expected" -msgstr "" - -#. In the few cases where we might be able to accept something else -#. this error can be overridden. -#: config/tc-arm.c:2023 -msgid "Floating point register expected" +#: config/tc-arm.c:2892 +msgid "floating point register expected" msgstr "" -#: config/tc-arm.c:2040 +#: config/tc-arm.c:2909 msgid "immediate expression expected" msgstr "" -#: config/tc-arm.c:2055 +#: config/tc-arm.c:2924 msgid "co-processor address must be word aligned" msgstr "" -#: config/tc-arm.c:2061 +#: config/tc-arm.c:2930 msgid "offset too large" msgstr "" -#: config/tc-arm.c:2109 +#: config/tc-arm.c:2979 msgid "pc may not be used in post-increment" msgstr "" -#: config/tc-arm.c:2125 config/tc-arm.c:2578 config/tc-arm.c:3438 -#: config/tc-arm.c:4358 +#: config/tc-arm.c:2995 config/tc-arm.c:3440 config/tc-arm.c:4228 +#: config/tc-arm.c:5095 config/tc-arm.c:5429 msgid "pre-indexed expression expected" msgstr "" -#: config/tc-arm.c:2138 config/tc-arm.c:2591 config/tc-arm.c:3449 -#: config/tc-arm.c:4370 config/tc-arm.c:4716 +#: config/tc-arm.c:3008 config/tc-arm.c:3453 config/tc-arm.c:4239 +#: config/tc-arm.c:5107 config/tc-arm.c:5441 config/tc-arm.c:5790 +#: config/tc-arm.c:8452 config/tc-arm.c:8467 msgid "missing ]" msgstr "" -#: config/tc-arm.c:2148 +#: config/tc-arm.c:3018 msgid "pc may not be used with write-back" msgstr "" -#: config/tc-arm.c:2203 +#: config/tc-arm.c:3070 msgid "comma expected after register name" msgstr "" -#: config/tc-arm.c:2222 -msgid "{C|S}PSR expected" +#: config/tc-arm.c:3089 +msgid "CPSR or SPSR expected" msgstr "" -#: config/tc-arm.c:2250 +#: config/tc-arm.c:3115 msgid "comma missing after psr flags" msgstr "" -#: config/tc-arm.c:2267 config/tc-arm.c:2277 +#: config/tc-arm.c:3131 config/tc-arm.c:3141 msgid "only a register or immediate value can follow a psr flag" msgstr "" -#: config/tc-arm.c:2284 +#: config/tc-arm.c:3152 msgid "immediate value cannot be used to set this field" msgstr "" -#: config/tc-arm.c:2301 config/tc-arm.c:3673 config/tc-arm.c:3939 -#: config/tc-arm.c:3959 -msgid "Invalid constant" +#: config/tc-arm.c:3170 config/tc-arm.c:4455 config/tc-arm.c:4735 +#: config/tc-arm.c:4755 config/tc-i960.c:1924 +msgid "invalid constant" msgstr "" -#: config/tc-arm.c:2351 +#: config/tc-arm.c:3218 msgid "rdhi, rdlo and rm must all be different" msgstr "" -#: config/tc-arm.c:2407 +#: config/tc-arm.c:3272 msgid "rd and rm should be different in mul" msgstr "" -#: config/tc-arm.c:2463 +#: config/tc-arm.c:3326 msgid "rd and rm should be different in mla" msgstr "" -#: config/tc-arm.c:2512 +#: config/tc-arm.c:3374 #, c-format msgid "acc0 expected, not '%.100s'" msgstr "" -#: config/tc-arm.c:2695 +#: config/tc-arm.c:3552 msgid "rdhi and rdlo must be different" msgstr "" -#: config/tc-arm.c:2815 -msgid "Warning: Instruction unpredictable when using r15" +#: config/tc-arm.c:3660 +msgid "Warning: instruction unpredictable when using r15" msgstr "" -#: config/tc-arm.c:3063 config/tc-arm.c:3255 config/tc-arm.c:5503 -#: config/tc-arm.c:5536 config/tc-arm.c:5546 +#: config/tc-arm.c:3886 config/tc-arm.c:4068 config/tc-arm.c:7395 +#: config/tc-arm.c:7428 config/tc-arm.c:7438 msgid "immediate value out of range" msgstr "" -#: config/tc-arm.c:3403 +#: config/tc-arm.c:4191 msgid "'[' expected after PLD mnemonic" msgstr "" -#: config/tc-arm.c:3428 config/tc-arm.c:3458 -msgid "writeback used in preload instruction" +#: config/tc-arm.c:4213 +msgid "post-indexed expression used in preload instruction" msgstr "" -#. Deny all knowledge. -#: config/tc-arm.c:3506 -#, c-format -msgid "bad instruction '%.100s'" +#: config/tc-arm.c:4218 config/tc-arm.c:4248 +msgid "writeback used in preload instruction" msgstr "" -#: config/tc-arm.c:3530 -msgid "Destination register must be even" +#: config/tc-arm.c:4290 +msgid "destination register must be even" msgstr "" -#: config/tc-arm.c:3536 -msgid "r12 or r14 not allowed here" +#: config/tc-arm.c:4296 +msgid "r14 not allowed here" msgstr "" -#: config/tc-arm.c:3544 +#: config/tc-arm.c:4303 msgid "pre/post-indexing used when modified address register is destination" msgstr "" -#: config/tc-arm.c:3657 +#: config/tc-arm.c:4313 +msgid "ldrd destination registers must not overlap index register" +msgstr "" + +#: config/tc-arm.c:4439 msgid "bad_segment" msgstr "" -#: config/tc-arm.c:3703 config/tc-arm.c:3714 -msgid "Shift expression expected" +#: config/tc-arm.c:4476 expr.c:1314 read.c:2198 +msgid "bad expression" +msgstr "" + +#: config/tc-arm.c:4499 config/tc-arm.c:4510 +msgid "shift expression expected" msgstr "" -#: config/tc-arm.c:3738 +#: config/tc-arm.c:4534 msgid "shift requires register or #expression" msgstr "" -#: config/tc-arm.c:3739 +#: config/tc-arm.c:4535 msgid "shift requires #expression" msgstr "" -#: config/tc-arm.c:3769 -msgid "Shift of 0 ignored." +#: config/tc-arm.c:4565 +msgid "shift of 0 ignored." msgstr "" -#: config/tc-arm.c:3775 -msgid "Invalid immediate shift" +#: config/tc-arm.c:4571 +msgid "invalid immediate shift" msgstr "" -#: config/tc-arm.c:3930 config/tc-arm.c:4400 -msgid "Constant expression expected" +#: config/tc-arm.c:4726 config/tc-arm.c:5143 config/tc-arm.c:5478 +#: config/tc-arm.c:6087 config/tc-v850.c:1956 config/tc-v850.c:1977 +msgid "constant expression expected" msgstr "" -#: config/tc-arm.c:3972 -msgid "Register or shift expression expected" +#: config/tc-arm.c:4768 +msgid "register or shift expression expected" msgstr "" -#: config/tc-arm.c:4025 -msgid "Invalid floating point immediate expression" +#: config/tc-arm.c:4821 +msgid "invalid floating point immediate expression" msgstr "" -#: config/tc-arm.c:4029 -msgid "Floating point register or immediate expression expected" +#: config/tc-arm.c:4825 +msgid "floating point register or immediate expression expected" msgstr "" -#: config/tc-arm.c:4198 +#: config/tc-arm.c:4979 config/tc-arm.c:5309 msgid "address offset too large" msgstr "" -#: config/tc-arm.c:4275 -msgid "Processor does not support halfwords or signed bytes" -msgstr "" - -#: config/tc-arm.c:4296 -msgid "Address expected" +#: config/tc-arm.c:5037 config/tc-arm.c:5227 config/tc-arm.c:5369 +msgid "address expected" msgstr "" -#: config/tc-arm.c:4326 config/tc-arm.c:4341 config/tc-arm.c:4379 +#: config/tc-arm.c:5067 config/tc-arm.c:5079 config/tc-arm.c:5116 +#: config/tc-arm.c:5245 config/tc-arm.c:5399 config/tc-arm.c:5413 +#: config/tc-arm.c:5450 #, c-format msgid "%s register same as write-back base" msgstr "" -#: config/tc-arm.c:4328 config/tc-arm.c:4343 config/tc-arm.c:4381 +#: config/tc-arm.c:5069 config/tc-arm.c:5081 config/tc-arm.c:5118 +#: config/tc-arm.c:5247 config/tc-arm.c:5401 config/tc-arm.c:5415 +#: config/tc-arm.c:5452 msgid "destination" msgstr "" -#: config/tc-arm.c:4328 config/tc-arm.c:4343 config/tc-arm.c:4381 +#: config/tc-arm.c:5069 config/tc-arm.c:5081 config/tc-arm.c:5118 +#: config/tc-arm.c:5247 config/tc-arm.c:5401 config/tc-arm.c:5415 +#: config/tc-arm.c:5452 msgid "source" msgstr "" -#: config/tc-arm.c:4420 +#: config/tc-arm.c:5128 config/tc-arm.c:5462 config/tc-arm.c:7699 +msgid "invalid pseudo operation" +msgstr "" + +#: config/tc-arm.c:5180 config/tc-arm.c:5513 msgid "literal pool insertion failed" msgstr "" -#: config/tc-arm.c:4459 -msgid "Pre-increment instruction with translate" +#: config/tc-arm.c:5275 config/tc-arm.c:5281 +msgid "post-indexed expression expected" msgstr "" -#: config/tc-arm.c:4500 -msgid "Bad range in register list" +#: config/tc-arm.c:5579 +msgid "bad range in register list" msgstr "" -#: config/tc-arm.c:4508 config/tc-arm.c:4517 config/tc-arm.c:4559 +#: config/tc-arm.c:5587 config/tc-arm.c:5596 config/tc-arm.c:5638 #, c-format -msgid "Warning: Duplicated register (r%d) in register list" +msgid "Warning: duplicated register (r%d) in register list" msgstr "" -#: config/tc-arm.c:4520 -msgid "Warning: Register range not in ascending order" +#: config/tc-arm.c:5599 +msgid "Warning: register range not in ascending order" msgstr "" -#: config/tc-arm.c:4532 -msgid "Missing `}'" +#: config/tc-arm.c:5611 +msgid "missing `}'" msgstr "" -#: config/tc-arm.c:4548 +#: config/tc-arm.c:5627 msgid "invalid register mask" msgstr "" -#: config/tc-arm.c:4569 config/tc-avr.c:852 config/tc-cris.c:2733 -#: config/tc-d10v.c:1560 config/tc-d30v.c:1865 config/tc-mips.c:3230 -#: config/tc-mips.c:4162 config/tc-mips.c:4947 config/tc-mips.c:5493 -#: config/tc-ppc.c:4854 config/tc-v850.c:2385 +#: config/tc-arm.c:5648 config/tc-arm.c:8709 config/tc-arm.c:8809 +#: config/tc-avr.c:860 config/tc-cris.c:3006 config/tc-d10v.c:1563 +#: config/tc-d30v.c:1863 config/tc-mips.c:3641 config/tc-mips.c:4630 +#: config/tc-mips.c:5486 config/tc-mips.c:6091 config/tc-ppc.c:5143 +#: config/tc-v850.c:2376 msgid "expression too complex" msgstr "" -#: config/tc-arm.c:4608 +#: config/tc-arm.c:5686 msgid "r15 not allowed as base register" msgstr "" -#: config/tc-arm.c:4676 config/tc-arm.c:4690 +#: config/tc-arm.c:5750 config/tc-arm.c:5764 msgid "r15 not allowed in swap" msgstr "" -#: config/tc-arm.c:4788 -msgid "Use of r15 in bx in ARM mode is not really useful" +#: config/tc-arm.c:5859 +msgid "use of r15 in bx in ARM mode is not really useful" msgstr "" -#: config/tc-arm.c:5044 config/tc-v850.c:1959 config/tc-v850.c:1980 -msgid "constant expression expected" +#: config/tc-arm.c:6093 +msgid "constant value required for number of registers" msgstr "" -#: config/tc-arm.c:5050 -msgid "Constant value required for number of registers" +#: config/tc-arm.c:6101 +msgid "number of registers must be in the range [1:4]" msgstr "" -#: config/tc-arm.c:5058 -msgid "number of registers must be in the range [1:4]" +#: config/tc-arm.c:6162 +msgid "r15 not allowed as base register with write-back" +msgstr "" + +#: config/tc-arm.c:6544 +msgid "only two consecutive VFP SP registers allowed here" +msgstr "" + +#: config/tc-arm.c:6712 +msgid "VFP system register expected" +msgstr "" + +#: config/tc-arm.c:6850 config/tc-arm.c:6889 config/tc-arm.c:6902 +#: config/tc-arm.c:6963 config/tc-arm.c:7002 config/tc-arm.c:7015 +#: config/tc-mips.c:9060 config/tc-mips.c:9090 +msgid "invalid register list" +msgstr "" + +#: config/tc-arm.c:6856 config/tc-arm.c:6969 +msgid "register list not in ascending order" msgstr "" -#: config/tc-arm.c:5119 -msgid "R15 not allowed as base register with write-back" +#: config/tc-arm.c:6881 config/tc-arm.c:6994 +msgid "register range not in ascending order" msgstr "" -#: config/tc-arm.c:5367 +#: config/tc-arm.c:6919 config/tc-arm.c:7032 +msgid "non-contiguous register range" +msgstr "" + +#: config/tc-arm.c:7062 config/tc-arm.c:7099 +msgid "this addressing mode requires base-register writeback" +msgstr "" + +#: config/tc-arm.c:7259 msgid "lo register required" msgstr "" -#: config/tc-arm.c:5375 +#: config/tc-arm.c:7267 msgid "hi register required" msgstr "" -#: config/tc-arm.c:5445 +#: config/tc-arm.c:7337 config/tc-arm.c:8541 msgid "dest and source1 must be the same register" msgstr "" -#: config/tc-arm.c:5452 +#: config/tc-arm.c:7344 msgid "subtract valid only on lo regs" msgstr "" -#: config/tc-arm.c:5476 +#: config/tc-arm.c:7368 msgid "invalid Hi register with immediate" msgstr "" -#: config/tc-arm.c:5514 +#: config/tc-arm.c:7406 msgid "invalid immediate value for stack adjust" msgstr "" -#: config/tc-arm.c:5525 +#: config/tc-arm.c:7417 msgid "invalid immediate for address calculation" msgstr "" -#: config/tc-arm.c:5612 +#: config/tc-arm.c:7504 msgid "source1 and dest must be same register" msgstr "" -#: config/tc-arm.c:5646 -msgid "Invalid immediate for shift" +#: config/tc-arm.c:7538 +msgid "invalid immediate for shift" msgstr "" -#: config/tc-arm.c:5725 +#: config/tc-arm.c:7617 msgid "only lo regs allowed with immediate" msgstr "" -#: config/tc-arm.c:5744 +#: config/tc-arm.c:7636 msgid "invalid immediate" msgstr "" -#: config/tc-arm.c:5798 +#: config/tc-arm.c:7690 msgid "expected ']'" msgstr "" -#: config/tc-arm.c:5865 +#: config/tc-arm.c:7763 msgid "byte or halfword not valid for base register" msgstr "" -#: config/tc-arm.c:5870 -msgid "R15 based store not allowed" +#: config/tc-arm.c:7768 +msgid "r15 based store not allowed" msgstr "" -#: config/tc-arm.c:5875 -msgid "Invalid base register for register offset" +#: config/tc-arm.c:7773 +msgid "invalid base register for register offset" msgstr "" -#: config/tc-arm.c:5893 +#: config/tc-arm.c:7791 config/tc-arm.c:7826 msgid "invalid offset" msgstr "" -#: config/tc-arm.c:5904 +#: config/tc-arm.c:7802 msgid "invalid base register in load/store" msgstr "" -#: config/tc-arm.c:5928 -msgid "Invalid offset" +#: config/tc-arm.c:8345 +msgid "expecting immediate, 7bit operand" msgstr "" -#: config/tc-arm.c:6003 -msgid "dest and source1 one must be the same register" +#: config/tc-arm.c:8360 +msgid "immediate out of range" msgstr "" -#: config/tc-arm.c:6011 -msgid "Rs and Rd must be different in MUL" +#: config/tc-arm.c:8403 +msgid "offset expected" msgstr "" -#: config/tc-arm.c:6155 -msgid "" -"Inserted missing '!': load/store multiple always writes back base register" +#: config/tc-arm.c:8412 config/tc-pj.c:528 config/tc-sh.c:3030 +msgid "offset out of range" msgstr "" -#: config/tc-arm.c:6171 config/tc-arm.c:6271 -msgid "Expression too complex" +#: config/tc-arm.c:8549 +msgid "Rs and Rd must be different in MUL" msgstr "" -#: config/tc-arm.c:6177 -msgid "only lo-regs valid in load/store multiple" +#: config/tc-arm.c:8693 +msgid "" +"inserted missing '!': load/store multiple always writes back base register" msgstr "" -#: config/tc-arm.c:6223 -msgid "Syntax: ldrs[b] Rd, [Rb, Ro]" +#: config/tc-arm.c:8715 +msgid "only lo-regs valid in load/store multiple" msgstr "" -#: config/tc-arm.c:6287 -msgid "invalid register list to push/pop instruction" +#: config/tc-arm.c:8761 +msgid "syntax: ldrs[b] Rd, [Rb, Ro]" msgstr "" -#: config/tc-arm.c:6429 config/tc-cris.c:664 -msgid "Virtual memory exhausted" +#: config/tc-arm.c:8825 +msgid "invalid register list to push/pop instruction" msgstr "" -#: config/tc-arm.c:6835 -#, c-format -msgid "invalid constant (%lx) after fixup" +#: config/tc-arm.c:8937 config/tc-arm.c:9115 +msgid "virtual memory exhausted" msgstr "" -#: config/tc-arm.c:6871 +#: config/tc-arm.c:9018 #, c-format -msgid "Unable to compute ADRL instructions for PC offset of 0x%lx" +msgid "register '%s' does not exist\n" msgstr "" -#: config/tc-arm.c:6901 +#: config/tc-arm.c:9022 #, c-format -msgid "bad immediate value for offset (%ld)" -msgstr "" - -#: config/tc-arm.c:6923 config/tc-arm.c:6945 -msgid "invalid literal constant: pool needs to be closer" +msgid "" +"ignoring redefinition of register alias '%s' to non-existant register '%s'" msgstr "" -#: config/tc-arm.c:6925 +#: config/tc-arm.c:9031 #, c-format -msgid "bad immediate value for half-word offset (%ld)" +msgid "ignoring redefinition of register alias '%s'" msgstr "" -#: config/tc-arm.c:6962 -msgid "shift expression is too large" +#: config/tc-arm.c:9037 +msgid "ignoring incomplete .req pseuso op" msgstr "" -#: config/tc-arm.c:6981 config/tc-arm.c:6990 -msgid "Invalid swi expression" +#: config/tc-arm.c:9312 +msgid "bad call to MD_ATOF()" msgstr "" -#: config/tc-arm.c:7000 -msgid "Invalid expression in load/store multiple" +#: config/tc-arm.c:9542 +#, c-format +msgid "invalid constant (%lx) after fixup" msgstr "" -#: config/tc-arm.c:7053 -msgid "gas can't handle same-section branch dest >= 0x04000000" +#: config/tc-arm.c:9578 +#, c-format +msgid "unable to compute ADRL instructions for PC offset of 0x%lx" msgstr "" -#: config/tc-arm.c:7062 -msgid "out of range branch" +#: config/tc-arm.c:9608 +#, c-format +msgid "bad immediate value for offset (%ld)" msgstr "" -#: config/tc-arm.c:7095 config/tc-arm.c:7111 config/tc-mips.c:9743 -msgid "Branch out of range" +#: config/tc-arm.c:9630 config/tc-arm.c:9652 +msgid "invalid literal constant: pool needs to be closer" msgstr "" -#: config/tc-arm.c:7134 -msgid "Branch with link out of range" +#: config/tc-arm.c:9632 +#, c-format +msgid "bad immediate value for half-word offset (%ld)" msgstr "" -#: config/tc-arm.c:7201 -msgid "Illegal value for co-processor offset" +#: config/tc-arm.c:9669 +msgid "shift expression is too large" msgstr "" -#: config/tc-arm.c:7225 -#, c-format -msgid "Invalid offset, target not word aligned (0x%08X)" +#: config/tc-arm.c:9688 config/tc-arm.c:9697 +msgid "invalid swi expression" msgstr "" -#: config/tc-arm.c:7231 config/tc-arm.c:7240 config/tc-arm.c:7247 -#: config/tc-arm.c:7254 config/tc-arm.c:7261 -#, c-format -msgid "Invalid offset, value too big (0x%08lX)" +#: config/tc-arm.c:9707 +msgid "invalid expression in load/store multiple" msgstr "" -#: config/tc-arm.c:7300 -msgid "Invalid immediate for stack address calculation" +#: config/tc-arm.c:9760 +msgid "GAS can't handle same-section branch dest >= 0x04000000" msgstr "" -#: config/tc-arm.c:7309 -#, c-format -msgid "Invalid immediate for address calculation (value = 0x%08lX)" +#: config/tc-arm.c:9769 +msgid "out of range branch" msgstr "" -#: config/tc-arm.c:7319 -msgid "Invalid 8bit immediate" +#: config/tc-arm.c:9802 config/tc-arm.c:9818 +msgid "branch out of range" msgstr "" -#: config/tc-arm.c:7327 -msgid "Invalid 3bit immediate" +#: config/tc-arm.c:9841 +msgid "branch with link out of range" msgstr "" -#: config/tc-arm.c:7343 -#, c-format -msgid "Invalid immediate: %ld is too large" +#: config/tc-arm.c:9917 +msgid "illegal value for co-processor offset" msgstr "" -#: config/tc-arm.c:7358 +#: config/tc-arm.c:9941 #, c-format -msgid "Illegal Thumb shift value: %ld" +msgid "invalid offset, target not word aligned (0x%08X)" msgstr "" -#: config/tc-arm.c:7372 config/tc-mn10300.c:1961 +#: config/tc-arm.c:9947 config/tc-arm.c:9956 config/tc-arm.c:9963 +#: config/tc-arm.c:9970 config/tc-arm.c:9977 #, c-format -msgid "Bad relocation fixup type (%d)" +msgid "invalid offset, value too big (0x%08lX)" msgstr "" -#: config/tc-arm.c:7445 -msgid "Literal referenced across section boundary (Implicit dump?)" +#: config/tc-arm.c:10016 +msgid "invalid immediate for stack address calculation" msgstr "" -#: config/tc-arm.c:7458 +#: config/tc-arm.c:10025 #, c-format -msgid "Internal_relocation (type %d) not fixed up (IMMEDIATE)" +msgid "invalid immediate for address calculation (value = 0x%08lX)" msgstr "" -#: config/tc-arm.c:7464 -msgid "ADRL used for a symbol not defined in the same file" +#: config/tc-arm.c:10035 +msgid "invalid 8bit immediate" msgstr "" -#: config/tc-arm.c:7469 -#, c-format -msgid "Internal_relocation (type %d) not fixed up (OFFSET_IMM)" +#: config/tc-arm.c:10043 +msgid "invalid 3bit immediate" msgstr "" -#: config/tc-arm.c:7490 config/tc-cris.c:2672 config/tc-mcore.c:2109 -#: config/tc-ns32k.c:2369 -msgid "<unknown>" -msgstr "" - -#: config/tc-arm.c:7493 +#: config/tc-arm.c:10059 #, c-format -msgid "Cannot represent %s relocation in this object file format" +msgid "invalid immediate: %ld is too large" msgstr "" -#: config/tc-arm.c:7514 config/tc-mips.c:11261 config/tc-sh.c:3177 +#: config/tc-arm.c:10074 #, c-format -msgid "Can not represent %s relocation in this object file format" +msgid "illegal Thumb shift value: %ld" msgstr "" -#: config/tc-arm.c:7611 +#: config/tc-arm.c:10088 #, c-format -msgid "No operator -- statement `%s'\n" +msgid "bad relocation fixup type (%d)" msgstr "" -#: config/tc-arm.c:7629 -msgid "selected processor does not support this opcode" +#: config/tc-arm.c:10159 +msgid "literal referenced across section boundary (Implicit dump?)" msgstr "" -#: config/tc-arm.c:7675 +#: config/tc-arm.c:10172 #, c-format -msgid "Opcode `%s' must have suffix from list: <%s>" +msgid "internal relocation (type %d) not fixed up (IMMEDIATE)" msgstr "" -#: config/tc-arm.c:7706 -msgid "Warning: Use of the 'nv' conditional is deprecated\n" +#: config/tc-arm.c:10178 +msgid "ADRL used for a symbol not defined in the same file" msgstr "" -#: config/tc-arm.c:7723 +#: config/tc-arm.c:10183 #, c-format -msgid "Opcode `%s' is unconditional\n" +msgid "internal_relocation (type %d) not fixed up (OFFSET_IMM)" msgstr "" -#: config/tc-arm.c:7747 -#, c-format -msgid "Opcode `%s' must have suffix from <%s>\n" +#: config/tc-arm.c:10204 config/tc-cris.c:2940 config/tc-mcore.c:2104 +#: config/tc-mmix.c:2840 config/tc-ns32k.c:2350 +msgid "<unknown>" msgstr "" -#: config/tc-arm.c:7838 +#: config/tc-arm.c:10207 config/tc-arm.c:10228 #, c-format -msgid "register '%s' does not exist\n" +msgid "cannot represent %s relocation in this object file format" msgstr "" -#: config/tc-arm.c:7843 +#: config/tc-arm.c:10325 #, c-format -msgid "ignoring redefinition of register alias '%s'" +msgid "no operator -- statement `%s'\n" msgstr "" -#: config/tc-arm.c:7849 +#: config/tc-arm.c:10343 config/tc-arm.c:10368 #, c-format -msgid "" -"ignoring redefinition of register alias '%s' to non-existant register '%s'" -msgstr "" - -#: config/tc-arm.c:7853 -msgid "ignoring incomplete .req pseuso op" +msgid "selected processor does not support `%s'" msgstr "" -#: config/tc-arm.c:7860 +#: config/tc-arm.c:10385 #, c-format msgid "bad instruction `%s'" msgstr "" -#: config/tc-arm.c:8035 +#: config/tc-arm.c:10583 #, c-format -msgid "Unrecognised APCS switch -m%s" +msgid "unrecognised APCS switch -m%s" msgstr "" -#: config/tc-arm.c:8192 config/tc-arm.c:8205 config/tc-arm.c:8218 -#: config/tc-arm.c:8231 config/tc-arm.c:8237 +#: config/tc-arm.c:10738 config/tc-arm.c:10751 config/tc-arm.c:10764 +#: config/tc-arm.c:10777 config/tc-arm.c:10783 #, c-format -msgid "Invalid architecture variant -m%s" +msgid "invalid architecture variant -m%s" msgstr "" -#: config/tc-arm.c:8244 +#: config/tc-arm.c:10790 #, c-format -msgid "Invalid processor variant -m%s" +msgid "invalid processor variant -m%s" msgstr "" -#: config/tc-arm.c:8267 +#: config/tc-arm.c:10813 msgid "" " ARM Specific Assembler Options:\n" " -m[arm][<processor name>] select processor variant\n" " -m[arm]v[2|2a|3|3m|4|4t|5[t][e]] select architecture variant\n" +" -marm9e allow Cirrus/DSP instructions\n" " -mthumb only allow Thumb instructions\n" " -mthumb-interwork mark the assembled code as supporting " "interworking\n" @@ -2033,11 +2167,13 @@ msgid "" " -mfpa10, -mfpa11 select floating point architecture\n" " -mfpe-old don't allow floating-point multiple " "instructions\n" +" -mvfpxd allow vfp single-precision instructions\n" +" -mvfp allow all vfp instructions\n" " -mno-fpu don't allow any floating-point instructions.\n" " -k generate PIC code.\n" msgstr "" -#: config/tc-arm.c:8279 +#: config/tc-arm.c:10828 msgid "" " -mapcs-32, -mapcs-26 specify which ARM Procedure Calling Standard to " "use\n" @@ -2046,30 +2182,34 @@ msgid "" " -mapcs-reentrant the code is position independent/reentrant\n" msgstr "" -#: config/tc-arm.c:8286 +#: config/tc-arm.c:10835 msgid " -moabi support the old ELF ABI\n" msgstr "" -#: config/tc-arm.c:8290 +#: config/tc-arm.c:10839 msgid "" " -EB assemble code for a big endian cpu\n" " -EL assemble code for a little endian cpu\n" msgstr "" -#: config/tc-arm.c:8443 +#: config/tc-arm.c:11023 #, c-format msgid "%s: unexpected function type: %d" msgstr "" +#: config/tc-arm.c:11389 +msgid "alignments greater than 32 bytes not supported in .text sections." +msgstr "" + #: config/tc-arm.h:98 msgid "arm convert_frag\n" msgstr "" -#: config/tc-avr.c:185 +#: config/tc-avr.c:197 msgid "Known MCU names:" msgstr "" -#: config/tc-avr.c:254 +#: config/tc-avr.c:266 msgid "" "AVR options:\n" " -mmcu=[avr-name] select microcontroller variant\n" @@ -2082,7 +2222,7 @@ msgid "" " or immediate microcontroller name.\n" msgstr "" -#: config/tc-avr.c:264 +#: config/tc-avr.c:276 msgid "" " -mall-opcodes accept all AVR opcodes, even if not supported by MCU\n" " -mno-skip-bug disable warnings for skipping two-word instructions\n" @@ -2091,320 +2231,359 @@ msgid "" " (default for avr3, avr5)\n" msgstr "" -#: config/tc-avr.c:312 +#: config/tc-avr.c:324 #, c-format msgid "unknown MCU: %s\n" msgstr "" -#: config/tc-avr.c:321 +#: config/tc-avr.c:333 #, c-format msgid "redefinition of mcu type `%s' to `%s'" msgstr "" -#: config/tc-avr.c:372 config/tc-d10v.c:313 config/tc-d30v.c:366 -#: config/tc-mips.c:8789 config/tc-mn10200.c:375 config/tc-pj.c:356 -#: config/tc-ppc.c:4518 config/tc-sh.c:2058 config/tc-v850.c:1291 +#: config/tc-avr.c:384 config/tc-d10v.c:314 config/tc-d30v.c:366 +#: config/tc-mips.c:9586 config/tc-mmix.c:2233 config/tc-mn10200.c:361 +#: config/tc-pj.c:357 config/tc-ppc.c:4803 config/tc-sh.c:2090 +#: config/tc-v850.c:1292 msgid "bad call to md_atof" msgstr "" -#: config/tc-avr.c:435 +#: config/tc-avr.c:447 msgid "constant value required" msgstr "" -#: config/tc-avr.c:438 +#: config/tc-avr.c:450 #, c-format msgid "number must be less than %d" msgstr "" -#: config/tc-avr.c:490 +#: config/tc-avr.c:502 msgid "`,' required" msgstr "" -#: config/tc-avr.c:509 +#: config/tc-avr.c:521 msgid "undefined combination of operands" msgstr "" -#: config/tc-avr.c:518 +#: config/tc-avr.c:530 msgid "skipping two-word instruction" msgstr "" -#: config/tc-avr.c:580 +#: config/tc-avr.c:592 msgid "register r16-r23 required" msgstr "" -#: config/tc-avr.c:586 +#: config/tc-avr.c:598 msgid "register number above 15 required" msgstr "" -#: config/tc-avr.c:592 +#: config/tc-avr.c:604 msgid "even register number required" msgstr "" -#: config/tc-avr.c:598 +#: config/tc-avr.c:610 msgid "register r24, r26, r28 or r30 required" msgstr "" -#: config/tc-avr.c:604 +#: config/tc-avr.c:616 msgid "register name or number from 0 to 31 required" msgstr "" -#: config/tc-avr.c:622 +#: config/tc-avr.c:634 msgid "pointer register (X, Y or Z) required" msgstr "" -#: config/tc-avr.c:629 +#: config/tc-avr.c:641 msgid "cannot both predecrement and postincrement" msgstr "" -#: config/tc-avr.c:637 +#: config/tc-avr.c:649 msgid "addressing mode not supported" msgstr "" -#: config/tc-avr.c:643 +#: config/tc-avr.c:655 msgid "can't predecrement" msgstr "" -#: config/tc-avr.c:646 +#: config/tc-avr.c:658 msgid "pointer register Z required" msgstr "" -#: config/tc-avr.c:664 +#: config/tc-avr.c:676 msgid "pointer register (Y or Z) required" msgstr "" -#: config/tc-avr.c:769 +#: config/tc-avr.c:781 #, c-format msgid "unknown constraint `%c'" msgstr "" -#: config/tc-avr.c:882 config/tc-avr.c:898 config/tc-avr.c:999 +#: config/tc-avr.c:890 config/tc-avr.c:906 config/tc-avr.c:1007 #, c-format msgid "odd address operand: %ld" msgstr "" -#: config/tc-avr.c:890 config/tc-avr.c:909 +#: config/tc-avr.c:898 config/tc-avr.c:917 #, c-format msgid "operand out of range: %ld" msgstr "" -#: config/tc-avr.c:1008 config/tc-d10v.c:1631 config/tc-d30v.c:1990 +#: config/tc-avr.c:1016 config/tc-d10v.c:1634 config/tc-d30v.c:1987 #, c-format msgid "line %d: unknown relocation type: 0x%x" msgstr "" -#: config/tc-avr.c:1022 +#: config/tc-avr.c:1030 msgid "only constant expression allowed" msgstr "" -#: config/tc-avr.c:1060 config/tc-d10v.c:1495 config/tc-d30v.c:1807 -#: config/tc-mn10200.c:1254 config/tc-mn10300.c:1810 config/tc-ppc.c:5161 -#: config/tc-v850.c:2301 +#: config/tc-avr.c:1067 config/tc-d10v.c:1498 config/tc-d30v.c:1807 +#: config/tc-mn10200.c:1240 config/tc-mn10300.c:1774 config/tc-ppc.c:5534 +#: config/tc-v850.c:2296 #, c-format msgid "reloc %d not supported by object file format" msgstr "" -#: config/tc-avr.c:1084 config/tc-d10v.c:1102 config/tc-d10v.c:1116 -#: config/tc-h8300.c:1239 config/tc-h8500.c:1098 config/tc-mcore.c:988 -#: config/tc-pj.c:265 config/tc-sh.c:1640 config/tc-z8k.c:1195 +#: config/tc-avr.c:1091 config/tc-d10v.c:1100 config/tc-d10v.c:1114 +#: config/tc-h8300.c:1275 config/tc-h8500.c:1088 config/tc-mcore.c:988 +#: config/tc-pj.c:266 config/tc-sh.c:1670 config/tc-z8k.c:1192 msgid "can't find opcode " msgstr "" -#: config/tc-avr.c:1101 +#: config/tc-avr.c:1108 #, c-format msgid "illegal opcode %s for mcu %s" msgstr "" -#: config/tc-avr.c:1109 +#: config/tc-avr.c:1116 msgid "garbage at end of line" msgstr "" -#: config/tc-avr.c:1173 +#: config/tc-avr.c:1180 read.c:3219 msgid "illegal expression" msgstr "" -#: config/tc-avr.c:1199 config/tc-avr.c:1265 +#: config/tc-avr.c:1206 config/tc-avr.c:1272 msgid "`)' required" msgstr "" -#: config/tc-avr.c:1219 +#: config/tc-avr.c:1226 #, c-format msgid "constant out of 8-bit range: %d" msgstr "" -#: config/tc-avr.c:1222 +#: config/tc-avr.c:1229 msgid "expression possibly out of 8-bit range" msgstr "" -#: config/tc-avr.c:1293 config/tc-avr.c:1300 +#: config/tc-avr.c:1300 config/tc-avr.c:1307 #, c-format msgid "illegal %srelocation size: %d" msgstr "" -#: config/tc-cris.c:672 +#: config/tc-cris.c:681 +msgid "Virtual memory exhausted" +msgstr "" + +#: config/tc-cris.c:689 #, c-format msgid "Can't hash `%s': %s\n" msgstr "" -#: config/tc-cris.c:673 +#: config/tc-cris.c:690 msgid "(unknown reason)" msgstr "" -#: config/tc-cris.c:677 +#: config/tc-cris.c:694 #, c-format msgid "Buggy opcode: `%s' \"%s\"\n" msgstr "" -#: config/tc-cris.c:1002 +#: config/tc-cris.c:1039 #, c-format msgid "Immediate value not in 5 bit unsigned range: %ld" msgstr "" -#: config/tc-cris.c:1018 +#: config/tc-cris.c:1055 #, c-format msgid "Immediate value not in 4 bit unsigned range: %ld" msgstr "" -#: config/tc-cris.c:1057 +#: config/tc-cris.c:1094 #, c-format msgid "Immediate value not in 6 bit range: %ld" msgstr "" -#: config/tc-cris.c:1072 +#: config/tc-cris.c:1109 #, c-format msgid "Immediate value not in 6 bit unsigned range: %ld" msgstr "" #. Others have a generic warning. -#: config/tc-cris.c:1159 +#: config/tc-cris.c:1199 #, c-format msgid "Unimplemented register `%s' specified" msgstr "" #. We've come to the end of instructions with this #. opcode, so it must be an error. -#: config/tc-cris.c:1309 +#: config/tc-cris.c:1358 msgid "Illegal operands" msgstr "" -#: config/tc-cris.c:1341 config/tc-cris.c:1372 +#: config/tc-cris.c:1389 config/tc-cris.c:1420 #, c-format msgid "Immediate value not in 8 bit range: %ld" msgstr "" -#: config/tc-cris.c:1351 config/tc-cris.c:1379 +#: config/tc-cris.c:1399 config/tc-cris.c:1427 #, c-format msgid "Immediate value not in 16 bit range: %ld" msgstr "" -#. FIXME: Find out and change to as_warn_where. Add testcase. -#: config/tc-cris.c:2316 +#: config/tc-cris.c:1448 +msgid "PIC relocation size does not match operand size" +msgstr "" + +#: config/tc-cris.c:2447 msgid "32-bit conditional branch generated" msgstr "" +#: config/tc-cris.c:2501 +msgid "Complex expression not supported" +msgstr "" + #. FIXME: Is this function mentioned in the internals.texi manual? If #. not, add it. -#: config/tc-cris.c:2395 +#: config/tc-cris.c:2622 msgid "Bad call to md_atof () - floating point formats are not supported" msgstr "" -#: config/tc-cris.c:2456 +#: config/tc-cris.c:2669 +msgid "PC-relative relocation must be trivially resolved" +msgstr "" + +#: config/tc-cris.c:2712 #, c-format msgid "Value not in 16 bit range: %ld" msgstr "" -#: config/tc-cris.c:2466 +#: config/tc-cris.c:2723 #, c-format msgid "Value not in 8 bit range: %ld" msgstr "" -#: config/tc-cris.c:2473 +#: config/tc-cris.c:2730 #, c-format msgid "Value not in 4 bit unsigned range: %ld" msgstr "" -#: config/tc-cris.c:2480 +#: config/tc-cris.c:2737 #, c-format msgid "Value not in 5 bit unsigned range: %ld" msgstr "" -#: config/tc-cris.c:2487 +#: config/tc-cris.c:2744 #, c-format msgid "Value not in 6 bit range: %ld" msgstr "" -#: config/tc-cris.c:2494 +#: config/tc-cris.c:2751 #, c-format msgid "Value not in 6 bit unsigned range: %ld" msgstr "" -#: config/tc-cris.c:2542 +#: config/tc-cris.c:2799 msgid "Please use --help to see usage and options for this assembler.\n" msgstr "" -#: config/tc-cris.c:2554 +#: config/tc-cris.c:2811 msgid "--no-underscore is invalid with a.out format" msgstr "" -#: config/tc-cris.c:2619 +#: config/tc-cris.c:2887 msgid "" "Semantics error. This type of operand can not be relocated, it must be an " "assembly-time constant" msgstr "" -#: config/tc-cris.c:2673 +#: config/tc-cris.c:2941 #, c-format msgid "Cannot generate relocation type for symbol %s, code %s" msgstr "" -#: config/tc-cris.c:2686 +#. The messages are formatted to line up with the generic options. +#: config/tc-cris.c:2955 msgid "CRIS-specific options:\n" msgstr "" -#: config/tc-cris.c:2688 +#: config/tc-cris.c:2957 msgid "" " -h, -H Don't execute, print this help text. Deprecated.\n" msgstr "" -#: config/tc-cris.c:2690 +#: config/tc-cris.c:2959 msgid " -N Warn when branches are expanded to jumps.\n" msgstr "" -#: config/tc-cris.c:2692 +#: config/tc-cris.c:2961 msgid "" " --underscore User symbols are normally prepended with " "underscore.\n" msgstr "" -#: config/tc-cris.c:2694 +#: config/tc-cris.c:2963 msgid " Registers will not need any prefix.\n" msgstr "" -#: config/tc-cris.c:2696 +#: config/tc-cris.c:2965 msgid " --no-underscore User symbols do not have any prefix.\n" msgstr "" -#: config/tc-cris.c:2698 +#: config/tc-cris.c:2967 msgid " Registers will require a `$'-prefix.\n" msgstr "" -#: config/tc-cris.c:2718 +#: config/tc-cris.c:2969 +msgid " --pic\t\t\tEnable generation of position-independent code.\n" +msgstr "" + +#: config/tc-cris.c:2992 msgid "Invalid relocation" msgstr "" -#: config/tc-cris.c:2758 +#: config/tc-cris.c:3033 msgid "Invalid pc-relative relocation" msgstr "" -#: config/tc-cris.c:2796 +#: config/tc-cris.c:3084 #, c-format msgid "Adjusted signed .word (%ld) overflows: `switch'-statement too large." msgstr "" -#: config/tc-cris.c:2870 +#: config/tc-cris.c:3111 +#, c-format +msgid ".syntax %s requires command-line option `--underscore'" +msgstr "" + +#: config/tc-cris.c:3120 +#, c-format +msgid ".syntax %s requires command-line option `--no-underscore'" +msgstr "" + +#: config/tc-cris.c:3158 msgid "Unknown .syntax operand" msgstr "" -#: config/tc-d10v.c:246 +#: config/tc-cris.c:3169 +msgid "Pseudodirective .file is only valid when generating ELF" +msgstr "" + +#: config/tc-cris.c:3182 +msgid "Pseudodirective .loc is only valid when generating ELF" +msgstr "" + +#: config/tc-d10v.c:247 msgid "" "D10V options:\n" "-O Optimize. Will do some operations in parallel.\n" @@ -2414,26 +2593,26 @@ msgid "" " instructions together.\n" msgstr "" -#: config/tc-d10v.c:530 config/tc-d30v.c:550 config/tc-mn10200.c:951 -#: config/tc-mn10300.c:1332 config/tc-ppc.c:1972 config/tc-tic80.c:278 -#: config/tc-v850.c:2073 +#: config/tc-d10v.c:538 config/tc-d30v.c:550 config/tc-mn10200.c:937 +#: config/tc-mn10300.c:1308 config/tc-ppc.c:2104 config/tc-s390.c:1052 +#: config/tc-tic80.c:279 config/tc-v850.c:2070 msgid "illegal operand" msgstr "" -#: config/tc-d10v.c:573 config/tc-d10v.c:655 config/tc-d30v.c:656 +#: config/tc-d10v.c:581 config/tc-d10v.c:663 config/tc-d30v.c:656 #, c-format msgid "operand out of range: %d" msgstr "" -#: config/tc-d10v.c:716 +#: config/tc-d10v.c:724 msgid "Instruction must be executed in parallel with another instruction." msgstr "" -#: config/tc-d10v.c:772 +#: config/tc-d10v.c:780 msgid "Instruction must be executed in parallel" msgstr "" -#: config/tc-d10v.c:775 +#: config/tc-d10v.c:783 msgid "Long instructions may not be combined." msgstr "" @@ -2445,8 +2624,8 @@ msgstr "" msgid "Two IU instructions may not be executed in parallel" msgstr "" -#: config/tc-d10v.c:823 config/tc-d10v.c:831 config/tc-d10v.c:848 -#: config/tc-d10v.c:865 config/tc-d30v.c:878 config/tc-d30v.c:887 +#: config/tc-d10v.c:823 config/tc-d10v.c:831 config/tc-d10v.c:844 +#: config/tc-d10v.c:859 config/tc-d30v.c:878 config/tc-d30v.c:887 msgid "Swapping instruction order" msgstr "" @@ -2454,38 +2633,38 @@ msgstr "" msgid "Two MU instructions may not be executed in parallel" msgstr "" -#: config/tc-d10v.c:852 config/tc-d30v.c:904 +#: config/tc-d10v.c:848 config/tc-d30v.c:904 msgid "IU instruction may not be in the left container" msgstr "" -#: config/tc-d10v.c:854 config/tc-d10v.c:871 +#: config/tc-d10v.c:850 config/tc-d10v.c:865 msgid "" "Instruction in R container is squashed by flow control instruction in L " "container." msgstr "" -#: config/tc-d10v.c:869 config/tc-d30v.c:915 +#: config/tc-d10v.c:863 config/tc-d30v.c:915 msgid "MU instruction may not be in the right container" msgstr "" -#: config/tc-d10v.c:877 config/tc-d30v.c:927 +#: config/tc-d10v.c:869 config/tc-d30v.c:927 msgid "unknown execution type passed to write_2_short()" msgstr "" -#: config/tc-d10v.c:1130 config/tc-d10v.c:1151 config/tc-d30v.c:1411 +#: config/tc-d10v.c:1128 config/tc-d10v.c:1149 config/tc-d30v.c:1411 msgid "Unable to mix instructions as specified" msgstr "" -#: config/tc-d10v.c:1198 config/tc-d30v.c:1548 +#: config/tc-d10v.c:1196 config/tc-d30v.c:1548 #, c-format msgid "unknown opcode: %s" msgstr "" -#: config/tc-d10v.c:1280 config/tc-d10v.c:1451 config/tc-tic80.c:535 +#: config/tc-d10v.c:1279 config/tc-d10v.c:1451 config/tc-tic80.c:536 msgid "bad opcode or operands" msgstr "" -#: config/tc-d10v.c:1353 config/tc-m68k.c:4286 +#: config/tc-d10v.c:1352 config/tc-m68k.c:4310 msgid "value out of range" msgstr "" @@ -2493,11 +2672,15 @@ msgstr "" msgid "illegal operand - register name found where none expected" msgstr "" -#: config/tc-d10v.c:1462 config/tc-tic80.c:546 +#: config/tc-d10v.c:1462 config/tc-tic80.c:547 msgid "Register number must be EVEN" msgstr "" -#: config/tc-d10v.c:1611 +#: config/tc-d10v.c:1465 +msgid "Unsupported use of sp" +msgstr "" + +#: config/tc-d10v.c:1614 #, c-format msgid "line %d: rep or repi must include at least 4 instructions" msgstr "" @@ -2609,37 +2792,37 @@ msgstr "" msgid "Odd numbered register used as target of multi-register instruction" msgstr "" -#: config/tc-d30v.c:1879 +#: config/tc-d30v.c:1876 #, c-format msgid "line %d: unable to place address of symbol '%s' into a byte" msgstr "" -#: config/tc-d30v.c:1882 +#: config/tc-d30v.c:1879 #, c-format msgid "line %d: unable to place value %x into a byte" msgstr "" -#: config/tc-d30v.c:1890 +#: config/tc-d30v.c:1887 #, c-format msgid "line %d: unable to place address of symbol '%s' into a short" msgstr "" -#: config/tc-d30v.c:1893 +#: config/tc-d30v.c:1890 #, c-format msgid "line %d: unable to place value %x into a short" msgstr "" -#: config/tc-d30v.c:1901 +#: config/tc-d30v.c:1898 #, c-format msgid "line %d: unable to place address of symbol '%s' into a quad" msgstr "" -#: config/tc-d30v.c:2072 +#: config/tc-d30v.c:2067 #, c-format msgid "value too large to fit in %d bits" msgstr "" -#: config/tc-d30v.c:2215 +#: config/tc-d30v.c:2210 #, c-format msgid "Alignment too large: %d assumed" msgstr "" @@ -2648,933 +2831,956 @@ msgstr "" msgid " FR30 specific command line options:\n" msgstr "" -#: config/tc-fr30.c:143 +#: config/tc-fr30.c:143 config/tc-openrisc.c:150 #, c-format msgid "Instruction %s not allowed in a delay slot." msgstr "" -#: config/tc-fr30.c:380 config/tc-m32r.c:1555 +#: config/tc-fr30.c:383 config/tc-m32r.c:1559 msgid "Addend to unresolved symbol not on word boundary." msgstr "" -#: config/tc-fr30.c:538 config/tc-i960.c:772 config/tc-m32r.c:1864 +#: config/tc-fr30.c:540 config/tc-i960.c:773 config/tc-m32r.c:1867 +#: config/tc-openrisc.c:468 msgid "Bad call to md_atof()" msgstr "" -#: config/tc-h8300.c:245 config/tc-h8300.c:253 +#: config/tc-h8300.c:64 config/tc-h8300.c:75 config/tc-h8300.c:134 +#: config/tc-hppa.c:1422 config/tc-hppa.c:6915 config/tc-hppa.c:6921 +#: config/tc-hppa.c:6927 config/tc-hppa.c:6933 config/tc-mn10300.c:900 +#: config/tc-mn10300.c:2164 +msgid "could not set architecture and machine" +msgstr "" + +#: config/tc-h8300.c:262 config/tc-h8300.c:270 msgid "Reg not valid for H8/300" msgstr "" -#: config/tc-h8300.c:413 config/tc-h8300.c:416 config/tc-h8300.c:419 -#: config/tc-h8300.c:423 +#: config/tc-h8300.c:430 config/tc-h8300.c:433 config/tc-h8300.c:436 +#: config/tc-h8300.c:440 msgid "Invalid register list for ldm/stm\n" msgstr "" -#: config/tc-h8300.c:475 config/tc-h8300.c:537 config/tc-h8300.c:544 +#: config/tc-h8300.c:492 config/tc-h8300.c:554 config/tc-h8300.c:561 msgid "Wrong size pointer register for architecture." msgstr "" -#: config/tc-h8300.c:502 config/tc-h8300.c:511 config/tc-h8300.c:521 +#: config/tc-h8300.c:519 config/tc-h8300.c:528 config/tc-h8300.c:538 msgid "expected @(exp, reg16)" msgstr "" -#: config/tc-h8300.c:600 +#: config/tc-h8300.c:617 msgid "expect :8 or :16 here" msgstr "" -#: config/tc-h8300.c:801 +#: config/tc-h8300.c:818 #, c-format msgid "operand %s0x%lx out of range." msgstr "" -#: config/tc-h8300.c:889 +#: config/tc-h8300.c:906 msgid "Can't work out size of operand.\n" msgstr "" -#: config/tc-h8300.c:937 +#: config/tc-h8300.c:954 #, c-format msgid "Opcode `%s' with these operand types not available in H8/300 mode" msgstr "" -#: config/tc-h8300.c:988 config/tc-h8300.c:1008 +#: config/tc-h8300.c:1005 config/tc-h8300.c:1025 msgid "Need #1 or #2 here" msgstr "" -#: config/tc-h8300.c:1003 +#: config/tc-h8300.c:1020 msgid "#4 not valid on H8/300." msgstr "" -#: config/tc-h8300.c:1089 config/tc-h8300.c:1121 +#: config/tc-h8300.c:1107 config/tc-h8300.c:1157 #, c-format msgid "branch operand has odd offset (%lx)\n" msgstr "" -#: config/tc-h8300.c:1159 +#: config/tc-h8300.c:1195 msgid "destination operand must be 16 bit register" msgstr "" -#: config/tc-h8300.c:1168 +#: config/tc-h8300.c:1204 msgid "source operand must be 8 bit register" msgstr "" -#: config/tc-h8300.c:1176 +#: config/tc-h8300.c:1212 msgid "destination operand must be 16bit absolute address" msgstr "" -#: config/tc-h8300.c:1183 +#: config/tc-h8300.c:1219 msgid "destination operand must be 8 bit register" msgstr "" -#: config/tc-h8300.c:1191 +#: config/tc-h8300.c:1227 msgid "source operand must be 16bit absolute address" msgstr "" -#: config/tc-h8300.c:1199 +#. This seems more sane than saying "too many operands". We'll +#. get here only if the trailing trash starts with a comma. +#: config/tc-h8300.c:1235 config/tc-mmix.c:452 config/tc-mmix.c:464 +#: config/tc-mmix.c:2485 config/tc-mmix.c:2509 config/tc-mmix.c:2774 msgid "invalid operands" msgstr "" -#: config/tc-h8300.c:1250 config/tc-h8500.c:1104 config/tc-mips.c:7984 -#: config/tc-sh.c:1877 config/tc-w65.c:740 config/tc-z8k.c:1205 +#: config/tc-h8300.c:1286 config/tc-h8500.c:1094 config/tc-mips.c:8649 +#: config/tc-sh.c:1907 config/tc-w65.c:733 config/tc-z8k.c:1202 msgid "unknown opcode" msgstr "" -#: config/tc-h8300.c:1296 +#: config/tc-h8300.c:1332 msgid "mismatch between opcode size and operand size" msgstr "" -#: config/tc-h8300.c:1307 config/tc-h8500.c:1131 config/tc-sh.c:2013 -#: config/tc-w65.c:770 config/tc-z8k.c:1258 +#: config/tc-h8300.c:1344 config/tc-h8500.c:1121 config/tc-sh.c:2045 +#: config/tc-w65.c:763 config/tc-z8k.c:1255 msgid "call to tc_crawl_symbol_chain \n" msgstr "" -#: config/tc-h8300.c:1321 config/tc-h8500.c:1145 config/tc-sh.c:2020 -#: config/tc-w65.c:784 config/tc-z8k.c:1272 +#: config/tc-h8300.c:1360 config/tc-h8500.c:1135 config/tc-sh.c:2052 +#: config/tc-w65.c:777 config/tc-z8k.c:1269 msgid "call to tc_headers_hook \n" msgstr "" -#: config/tc-h8300.c:1412 config/tc-h8500.c:1235 config/tc-z8k.c:1386 +#: config/tc-h8300.c:1452 config/tc-h8500.c:1225 config/tc-z8k.c:1383 msgid "call to tc_aout_fix_to_chars \n" msgstr "" -#: config/tc-h8300.c:1422 config/tc-z8k.c:1396 +#: config/tc-h8300.c:1466 config/tc-z8k.c:1393 msgid "call to md_convert_frag \n" msgstr "" -#: config/tc-h8300.c:1467 config/tc-z8k.c:1477 +#: config/tc-h8300.c:1528 config/tc-z8k.c:1479 msgid "call tomd_estimate_size_before_relax \n" msgstr "" -#: config/tc-h8500.c:333 +#: config/tc-h8300.c:1649 config/tc-mcore.c:2413 config/tc-pj.c:572 +#: config/tc-sh.c:3367 +#, c-format +msgid "Cannot represent relocation type %s" +msgstr "" + +#: config/tc-h8500.c:323 msgid ":24 not valid for this opcode" msgstr "" -#: config/tc-h8500.c:340 +#: config/tc-h8500.c:330 msgid "expect :8,:16 or :24" msgstr "" -#: config/tc-h8500.c:397 +#: config/tc-h8500.c:387 msgid "syntax error in reg list" msgstr "" -#: config/tc-h8500.c:415 +#: config/tc-h8500.c:405 msgid "missing final register in range" msgstr "" -#: config/tc-h8500.c:502 config/tc-h8500.c:509 config/tc-h8500.c:515 +#: config/tc-h8500.c:492 config/tc-h8500.c:499 config/tc-h8500.c:505 msgid "expected @(exp, Rn)" msgstr "" -#: config/tc-h8500.c:531 +#: config/tc-h8500.c:521 msgid "@Rn+ needs word register" msgstr "" -#: config/tc-h8500.c:541 +#: config/tc-h8500.c:531 msgid "@Rn needs word register" msgstr "" -#: config/tc-h8500.c:838 config/tc-sh.c:1357 +#: config/tc-h8500.c:828 config/tc-sh.c:1403 #, c-format msgid "unhandled %d\n" msgstr "" -#: config/tc-h8500.c:866 config/tc-sh.c:1382 +#: config/tc-h8500.c:856 #, c-format msgid "operand must be absolute in range %d..%d" msgstr "" -#: config/tc-h8500.c:955 config/tc-sh.c:1580 +#: config/tc-h8500.c:945 config/tc-sh.c:1610 #, c-format msgid "failed for %d\n" msgstr "" -#: config/tc-h8500.c:1120 config/tc-sh.c:1681 config/tc-sh.c:1926 -#: config/tc-w65.c:759 +#: config/tc-h8500.c:1110 config/tc-sh.c:1711 config/tc-sh.c:1956 +#: config/tc-w65.c:752 msgid "invalid operands for opcode" msgstr "" #. Simple range checking for FIELD againt HIGH and LOW bounds. #. IGNORE is used to suppress the error message. -#: config/tc-hppa.c:1119 +#: config/tc-hppa.c:1155 config/tc-hppa.c:1169 #, c-format msgid "Field out of range [%d..%d] (%d)." msgstr "" #. Simple alignment checking for FIELD againt ALIGN (a power of two). #. IGNORE is used to suppress the error message. -#: config/tc-hppa.c:1133 +#: config/tc-hppa.c:1183 #, c-format msgid "Field not properly aligned [%d] (%d)." msgstr "" -#: config/tc-hppa.c:1162 +#: config/tc-hppa.c:1212 msgid "Missing .exit\n" msgstr "" -#: config/tc-hppa.c:1165 +#: config/tc-hppa.c:1215 msgid "Missing .procend\n" msgstr "" -#: config/tc-hppa.c:1345 +#: config/tc-hppa.c:1395 +#, c-format msgid "Invalid field selector. Assuming F%%." msgstr "" -#: config/tc-hppa.c:1372 config/tc-hppa.c:6839 config/tc-hppa.c:6845 -#: config/tc-hppa.c:6851 config/tc-hppa.c:6857 config/tc-mn10300.c:924 -#: config/tc-mn10300.c:2133 -msgid "could not set architecture and machine" -msgstr "" - -#: config/tc-hppa.c:1378 +#: config/tc-hppa.c:1428 msgid "-R option not supported on this target." msgstr "" -#: config/tc-hppa.c:1394 config/tc-sparc.c:802 config/tc-sparc.c:838 +#: config/tc-hppa.c:1444 config/tc-sparc.c:803 config/tc-sparc.c:839 #, c-format msgid "Internal error: can't hash `%s': %s\n" msgstr "" -#: config/tc-hppa.c:1402 config/tc-i860.c:190 +#: config/tc-hppa.c:1452 config/tc-i860.c:190 #, c-format msgid "internal error: losing opcode: `%s' \"%s\"\n" msgstr "" -#: config/tc-hppa.c:1471 config/tc-hppa.c:6978 config/tc-hppa.c:7033 +#: config/tc-hppa.c:1523 config/tc-hppa.c:7054 config/tc-hppa.c:7111 msgid "Missing function name for .PROC (corrupted label chain)" msgstr "" -#: config/tc-hppa.c:1474 config/tc-hppa.c:7036 +#: config/tc-hppa.c:1526 config/tc-hppa.c:7114 msgid "Missing function name for .PROC" msgstr "" -#: config/tc-hppa.c:1582 config/tc-hppa.c:4812 +#: config/tc-hppa.c:1633 config/tc-hppa.c:4911 msgid "could not update architecture and machine" msgstr "" -#: config/tc-hppa.c:1789 +#: config/tc-hppa.c:1841 msgid "Invalid Indexed Load Completer." msgstr "" -#: config/tc-hppa.c:1794 +#: config/tc-hppa.c:1846 msgid "Invalid Indexed Load Completer Syntax." msgstr "" -#: config/tc-hppa.c:1830 +#: config/tc-hppa.c:1883 msgid "Invalid Short Load/Store Completer." msgstr "" -#: config/tc-hppa.c:1889 config/tc-hppa.c:1894 +#: config/tc-hppa.c:1943 config/tc-hppa.c:1948 msgid "Invalid Store Bytes Short Completer" msgstr "" -#: config/tc-hppa.c:2205 config/tc-hppa.c:2211 +#: config/tc-hppa.c:2259 config/tc-hppa.c:2265 msgid "Invalid left/right combination completer" msgstr "" -#: config/tc-hppa.c:2260 config/tc-hppa.c:2267 +#: config/tc-hppa.c:2314 config/tc-hppa.c:2321 msgid "Invalid permutation completer" msgstr "" -#: config/tc-hppa.c:2368 +#: config/tc-hppa.c:2422 #, c-format msgid "Invalid Add Condition: %s" msgstr "" -#: config/tc-hppa.c:2379 config/tc-hppa.c:2389 -#, c-format -msgid "Invalid Add and Branch Condition: %c" +#: config/tc-hppa.c:2433 config/tc-hppa.c:2443 +msgid "Invalid Add and Branch Condition" msgstr "" -#: config/tc-hppa.c:2410 +#: config/tc-hppa.c:2464 config/tc-hppa.c:2602 msgid "Invalid Compare/Subtract Condition" msgstr "" -#: config/tc-hppa.c:2450 +#: config/tc-hppa.c:2504 #, c-format msgid "Invalid Bit Branch Condition: %c" msgstr "" -#: config/tc-hppa.c:2536 +#: config/tc-hppa.c:2590 #, c-format msgid "Invalid Compare/Subtract Condition: %s" msgstr "" -#: config/tc-hppa.c:2548 -#, c-format -msgid "Invalid Compare/Subtract Condition: %c" -msgstr "" - -#: config/tc-hppa.c:2563 -msgid "Invalid Compare and Branch Condition." +#: config/tc-hppa.c:2617 +msgid "Invalid Compare and Branch Condition" msgstr "" -#: config/tc-hppa.c:2659 +#: config/tc-hppa.c:2713 msgid "Invalid Logical Instruction Condition." msgstr "" -#: config/tc-hppa.c:2714 +#: config/tc-hppa.c:2768 msgid "Invalid Shift/Extract/Deposit Condition." msgstr "" -#: config/tc-hppa.c:2826 +#: config/tc-hppa.c:2880 msgid "Invalid Unit Instruction Condition." msgstr "" -#: config/tc-hppa.c:3174 config/tc-hppa.c:3205 config/tc-hppa.c:3238 -#: config/tc-hppa.c:3270 +#: config/tc-hppa.c:3257 config/tc-hppa.c:3289 config/tc-hppa.c:3320 +#: config/tc-hppa.c:3350 msgid "Branch to unaligned address" msgstr "" -#: config/tc-hppa.c:3450 +#: config/tc-hppa.c:3528 msgid "Invalid SFU identifier" msgstr "" -#: config/tc-hppa.c:3500 +#: config/tc-hppa.c:3578 msgid "Invalid COPR identifier" msgstr "" -#: config/tc-hppa.c:3629 +#: config/tc-hppa.c:3707 msgid "Invalid Floating Point Operand Format." msgstr "" -#: config/tc-hppa.c:3746 config/tc-hppa.c:3766 config/tc-hppa.c:3786 -#: config/tc-hppa.c:3806 config/tc-hppa.c:3826 +#: config/tc-hppa.c:3824 config/tc-hppa.c:3844 config/tc-hppa.c:3864 +#: config/tc-hppa.c:3884 config/tc-hppa.c:3904 msgid "Invalid register for single precision fmpyadd or fmpysub" msgstr "" -#: config/tc-hppa.c:3883 +#: config/tc-hppa.c:3961 #, c-format msgid "Invalid operands %s" msgstr "" -#: config/tc-hppa.c:4001 -#, c-format -msgid "Cannot handle fixup at %s:%d" +#: config/tc-hppa.c:4079 +msgid "Cannot handle fixup" msgstr "" -#: config/tc-hppa.c:4296 +#: config/tc-hppa.c:4380 msgid " -Q ignored\n" msgstr "" -#: config/tc-hppa.c:4300 +#: config/tc-hppa.c:4384 msgid " -c print a warning if a comment is found\n" msgstr "" -#: config/tc-hppa.c:4366 +#: config/tc-hppa.c:4455 #, c-format -msgid "no hppa_fixup entry for fixup type 0x%x at %s:%d" +msgid "no hppa_fixup entry for fixup type 0x%x" msgstr "" -#: config/tc-hppa.c:4533 +#: config/tc-hppa.c:4633 msgid "Unknown relocation encountered in md_apply_fix." msgstr "" -#: config/tc-hppa.c:4676 config/tc-hppa.c:4701 +#: config/tc-hppa.c:4775 config/tc-hppa.c:4800 #, c-format msgid "Undefined register: '%s'." msgstr "" -#: config/tc-hppa.c:4735 +#: config/tc-hppa.c:4834 #, c-format msgid "Non-absolute symbol: '%s'." msgstr "" -#: config/tc-hppa.c:4750 +#: config/tc-hppa.c:4849 #, c-format msgid "Undefined absolute constant: '%s'." msgstr "" -#: config/tc-hppa.c:4851 +#: config/tc-hppa.c:4950 #, c-format msgid "Invalid FP Compare Condition: %s" msgstr "" -#: config/tc-hppa.c:4907 +#: config/tc-hppa.c:5006 #, c-format msgid "Invalid FTEST completer: %s" msgstr "" -#: config/tc-hppa.c:4974 config/tc-hppa.c:5012 +#: config/tc-hppa.c:5073 config/tc-hppa.c:5111 #, c-format msgid "Invalid FP Operand Format: %3s" msgstr "" -#: config/tc-hppa.c:5091 +#: config/tc-hppa.c:5190 msgid "Bad segment in expression." msgstr "" -#: config/tc-hppa.c:5150 +#: config/tc-hppa.c:5249 msgid "Bad segment (should be absolute)." msgstr "" -#: config/tc-hppa.c:5193 +#: config/tc-hppa.c:5292 #, c-format msgid "Invalid argument location: %s\n" msgstr "" -#: config/tc-hppa.c:5224 +#: config/tc-hppa.c:5323 #, c-format msgid "Invalid argument description: %d" msgstr "" -#: config/tc-hppa.c:5247 +#: config/tc-hppa.c:5346 #, c-format msgid "Invalid Nullification: (%c)" msgstr "" -#: config/tc-hppa.c:5983 +#: config/tc-hppa.c:6066 #, c-format msgid "Invalid .CALL argument: %s" msgstr "" -#: config/tc-hppa.c:6114 +#: config/tc-hppa.c:6188 msgid ".callinfo is not within a procedure definition" msgstr "" -#: config/tc-hppa.c:6134 +#: config/tc-hppa.c:6208 #, c-format msgid "FRAME parameter must be a multiple of 8: %d\n" msgstr "" -#: config/tc-hppa.c:6153 +#: config/tc-hppa.c:6227 msgid "Value for ENTRY_GR must be in the range 3..18\n" msgstr "" -#: config/tc-hppa.c:6165 +#: config/tc-hppa.c:6239 msgid "Value for ENTRY_FR must be in the range 12..21\n" msgstr "" -#: config/tc-hppa.c:6175 +#: config/tc-hppa.c:6249 msgid "Value for ENTRY_SR must be 3\n" msgstr "" -#: config/tc-hppa.c:6231 +#: config/tc-hppa.c:6305 #, c-format msgid "Invalid .CALLINFO argument: %s" msgstr "" -#: config/tc-hppa.c:6342 +#: config/tc-hppa.c:6416 msgid "The .ENTER pseudo-op is not supported" msgstr "" -#: config/tc-hppa.c:6358 +#: config/tc-hppa.c:6432 msgid "Misplaced .entry. Ignored." msgstr "" -#: config/tc-hppa.c:6362 +#: config/tc-hppa.c:6436 msgid "Missing .callinfo." msgstr "" -#: config/tc-hppa.c:6426 +#: config/tc-hppa.c:6502 msgid ".REG expression must be a register" msgstr "" -#: config/tc-hppa.c:6442 read.c:4728 +#: config/tc-hppa.c:6518 msgid "bad or irreducible absolute expression; zero assumed" msgstr "" -#: config/tc-hppa.c:6453 +#: config/tc-hppa.c:6529 msgid ".REG must use a label" msgstr "" -#: config/tc-hppa.c:6455 +#: config/tc-hppa.c:6531 msgid ".EQU must use a label" msgstr "" -#: config/tc-hppa.c:6508 +#: config/tc-hppa.c:6584 msgid ".EXIT must appear within a procedure" msgstr "" -#: config/tc-hppa.c:6512 +#: config/tc-hppa.c:6588 msgid "Missing .callinfo" msgstr "" -#: config/tc-hppa.c:6516 +#: config/tc-hppa.c:6592 msgid "No .ENTRY for this .EXIT" msgstr "" -#: config/tc-hppa.c:6543 +#: config/tc-hppa.c:6619 #, c-format msgid "Cannot define export symbol: %s\n" msgstr "" -#: config/tc-hppa.c:6601 +#: config/tc-hppa.c:6677 #, c-format msgid "Using ENTRY rather than CODE in export directive for %s" msgstr "" -#: config/tc-hppa.c:6718 +#: config/tc-hppa.c:6794 #, c-format msgid "Undefined .EXPORT/.IMPORT argument (ignored): %s" msgstr "" -#: config/tc-hppa.c:6800 +#: config/tc-hppa.c:6876 msgid "Missing label name on .LABEL" msgstr "" -#: config/tc-hppa.c:6805 +#: config/tc-hppa.c:6881 msgid "extra .LABEL arguments ignored." msgstr "" -#: config/tc-hppa.c:6822 +#: config/tc-hppa.c:6898 msgid "The .LEAVE pseudo-op is not supported" msgstr "" -#: config/tc-hppa.c:6861 +#: config/tc-hppa.c:6937 msgid "Unrecognized .LEVEL argument\n" msgstr "" -#: config/tc-hppa.c:6897 +#: config/tc-hppa.c:6973 #, c-format msgid "Cannot define static symbol: %s\n" msgstr "" -#: config/tc-hppa.c:6932 +#: config/tc-hppa.c:7008 msgid "Nested procedures" msgstr "" -#: config/tc-hppa.c:6942 +#: config/tc-hppa.c:7018 msgid "Cannot allocate unwind descriptor\n" msgstr "" -#: config/tc-hppa.c:7040 +#: config/tc-hppa.c:7118 msgid "misplaced .procend" msgstr "" -#: config/tc-hppa.c:7043 +#: config/tc-hppa.c:7121 msgid "Missing .callinfo for this procedure" msgstr "" -#: config/tc-hppa.c:7046 +#: config/tc-hppa.c:7124 msgid "Missing .EXIT for a .ENTRY" msgstr "" -#: config/tc-hppa.c:7084 +#: config/tc-hppa.c:7162 msgid "Not in a space.\n" msgstr "" -#: config/tc-hppa.c:7087 +#: config/tc-hppa.c:7165 msgid "Not in a subspace.\n" msgstr "" -#: config/tc-hppa.c:7178 +#: config/tc-hppa.c:7256 msgid "Invalid .SPACE argument" msgstr "" -#: config/tc-hppa.c:7225 +#: config/tc-hppa.c:7303 msgid "Can't change spaces within a procedure definition. Ignored" msgstr "" -#: config/tc-hppa.c:7354 +#: config/tc-hppa.c:7432 #, c-format msgid "Undefined space: '%s' Assuming space number = 0." msgstr "" -#: config/tc-hppa.c:7378 +#: config/tc-hppa.c:7456 msgid "Must be in a space before changing or declaring subspaces.\n" msgstr "" -#: config/tc-hppa.c:7382 +#: config/tc-hppa.c:7460 msgid "Can't change subspaces within a procedure definition. Ignored" msgstr "" -#: config/tc-hppa.c:7417 +#: config/tc-hppa.c:7495 msgid "Parameters of an existing subspace can't be modified" msgstr "" -#: config/tc-hppa.c:7468 +#: config/tc-hppa.c:7546 msgid "Alignment must be a power of 2" msgstr "" -#: config/tc-hppa.c:7510 +#: config/tc-hppa.c:7588 msgid "FIRST not supported as a .SUBSPACE argument" msgstr "" -#: config/tc-hppa.c:7512 +#: config/tc-hppa.c:7590 msgid "Invalid .SUBSPACE argument" msgstr "" -#: config/tc-hppa.c:7692 +#: config/tc-hppa.c:7770 #, c-format msgid "Internal error: Unable to find containing space for %s." msgstr "" -#: config/tc-hppa.c:7731 +#: config/tc-hppa.c:7809 #, c-format msgid "Out of memory: could not allocate new space chain entry: %s\n" msgstr "" -#: config/tc-hppa.c:7817 +#: config/tc-hppa.c:7895 #, c-format msgid "Out of memory: could not allocate new subspace chain entry: %s\n" msgstr "" -#: config/tc-hppa.c:8511 +#: config/tc-hppa.c:8589 #, c-format msgid "Symbol '%s' could not be created." msgstr "" -#: config/tc-hppa.c:8515 +#: config/tc-hppa.c:8593 msgid "No memory for symbol name." msgstr "" -#: config/tc-i386.c:581 +#: config/tc-i386.c:594 #, c-format msgid "%s shortened to %s" msgstr "" -#: config/tc-i386.c:636 +#: config/tc-i386.c:649 msgid "same type of prefix used twice" msgstr "" -#: config/tc-i386.c:654 +#: config/tc-i386.c:667 msgid "64bit mode not supported on this CPU." msgstr "" -#: config/tc-i386.c:658 +#: config/tc-i386.c:671 msgid "32bit mode not supported on this CPU." msgstr "" -#: config/tc-i386.c:691 +#: config/tc-i386.c:704 msgid "bad argument to syntax directive." msgstr "" -#: config/tc-i386.c:734 +#: config/tc-i386.c:748 #, c-format msgid "no such architecture: `%s'" msgstr "" -#: config/tc-i386.c:739 +#: config/tc-i386.c:753 msgid "missing cpu architecture" msgstr "" -#: config/tc-i386.c:812 config/tc-i386.c:835 config/tc-m68k.c:3802 +#: config/tc-i386.c:767 +#, c-format +msgid "no such architecture modifier: `%s'" +msgstr "" + +#: config/tc-i386.c:821 config/tc-i386.c:4628 +msgid "Unknown architecture" +msgstr "" + +#: config/tc-i386.c:856 config/tc-i386.c:879 config/tc-m68k.c:3826 #, c-format msgid "Internal Error: Can't hash %s: %s" msgstr "" -#: config/tc-i386.c:1088 +#: config/tc-i386.c:1132 msgid "There are no unsigned pc-relative relocations" msgstr "" -#: config/tc-i386.c:1095 config/tc-i386.c:4622 +#: config/tc-i386.c:1139 config/tc-i386.c:4827 #, c-format msgid "can not do %d byte pc-relative relocation" msgstr "" -#: config/tc-i386.c:1112 +#: config/tc-i386.c:1156 #, c-format msgid "can not do %s %d byte relocation" msgstr "" -#: config/tc-i386.c:1221 config/tc-i386.c:1314 +#: config/tc-i386.c:1263 config/tc-i386.c:1357 #, c-format msgid "no such instruction: `%s'" msgstr "" -#: config/tc-i386.c:1230 +#: config/tc-i386.c:1273 config/tc-i386.c:1389 #, c-format msgid "invalid character %s in mnemonic" msgstr "" -#: config/tc-i386.c:1237 +#: config/tc-i386.c:1280 msgid "expecting prefix; got nothing" msgstr "" -#: config/tc-i386.c:1239 +#: config/tc-i386.c:1282 msgid "expecting mnemonic; got nothing" msgstr "" -#: config/tc-i386.c:1257 +#: config/tc-i386.c:1300 #, c-format msgid "redundant %s prefix" msgstr "" -#: config/tc-i386.c:1325 +#: config/tc-i386.c:1398 #, c-format msgid "`%s' is not supported on `%s'" msgstr "" -#: config/tc-i386.c:1330 +#: config/tc-i386.c:1403 msgid "use .code16 to ensure correct addressing mode" msgstr "" -#: config/tc-i386.c:1338 +#: config/tc-i386.c:1410 #, c-format msgid "expecting string instruction after `%s'" msgstr "" -#: config/tc-i386.c:1359 +#: config/tc-i386.c:1431 #, c-format msgid "invalid character %s before operand %d" msgstr "" -#: config/tc-i386.c:1373 +#: config/tc-i386.c:1445 #, c-format msgid "unbalanced parenthesis in operand %d." msgstr "" -#: config/tc-i386.c:1376 +#: config/tc-i386.c:1448 #, c-format msgid "unbalanced brackets in operand %d." msgstr "" -#: config/tc-i386.c:1385 +#: config/tc-i386.c:1457 #, c-format msgid "invalid character %s in operand %d" msgstr "" -#: config/tc-i386.c:1412 +#: config/tc-i386.c:1484 #, c-format msgid "spurious operands; (%d operands/instruction max)" msgstr "" -#: config/tc-i386.c:1435 +#: config/tc-i386.c:1507 msgid "expecting operand after ','; got nothing" msgstr "" -#: config/tc-i386.c:1440 +#: config/tc-i386.c:1512 msgid "expecting operand before ','; got nothing" msgstr "" #. We found no match. -#: config/tc-i386.c:1782 +#: config/tc-i386.c:1856 #, c-format msgid "suffix or operands invalid for `%s'" msgstr "" -#: config/tc-i386.c:1793 +#: config/tc-i386.c:1867 #, c-format msgid "indirect %s without `*'" msgstr "" #. Warn them that a data or address size prefix doesn't #. affect assembly of the next line of code. -#: config/tc-i386.c:1801 +#: config/tc-i386.c:1875 #, c-format msgid "stand-alone `%s' prefix" msgstr "" -#: config/tc-i386.c:1837 config/tc-i386.c:1852 +#: config/tc-i386.c:1911 config/tc-i386.c:1926 +#, c-format msgid "`%s' operand %d must use `%%es' segment" msgstr "" -#: config/tc-i386.c:1867 -msgid "Extended register `%%%s' available only in 64bit mode." -msgstr "" - #. Prohibit these changes in the 64bit mode, since #. the lowering is more complicated. -#: config/tc-i386.c:1938 config/tc-i386.c:1989 config/tc-i386.c:2004 -#: config/tc-i386.c:2032 config/tc-i386.c:2060 +#: config/tc-i386.c:1999 config/tc-i386.c:2053 config/tc-i386.c:2068 +#: config/tc-i386.c:2096 config/tc-i386.c:2124 +#, c-format msgid "Incorrect register `%%%s' used with`%c' suffix" msgstr "" -#: config/tc-i386.c:1944 config/tc-i386.c:1994 config/tc-i386.c:2065 +#: config/tc-i386.c:2005 config/tc-i386.c:2058 config/tc-i386.c:2129 +#, c-format msgid "using `%%%s' instead of `%%%s' due to `%c' suffix" msgstr "" -#: config/tc-i386.c:1957 config/tc-i386.c:1975 config/tc-i386.c:2019 -#: config/tc-i386.c:2046 +#: config/tc-i386.c:2021 config/tc-i386.c:2039 config/tc-i386.c:2083 +#: config/tc-i386.c:2110 +#, c-format msgid "`%%%s' not allowed with `%s%c'" msgstr "" -#: config/tc-i386.c:2106 +#: config/tc-i386.c:2170 msgid "no instruction mnemonic suffix given; can't determine immediate size" msgstr "" -#: config/tc-i386.c:2132 +#: config/tc-i386.c:2196 #, c-format msgid "" "no instruction mnemonic suffix given; can't determine immediate size %x %c" msgstr "" -#: config/tc-i386.c:2157 +#: config/tc-i386.c:2221 msgid "" "no instruction mnemonic suffix given and no register operands; can't size " "instruction" msgstr "" -#: config/tc-i386.c:2205 +#: config/tc-i386.c:2269 msgid "64bit operations available only in 64bit modes." msgstr "" #. Reversed arguments on faddp, fsubp, etc. -#: config/tc-i386.c:2273 +#: config/tc-i386.c:2337 +#, c-format msgid "translating to `%s %%%s,%%%s'" msgstr "" #. Extraneous `l' suffix on fp insn. -#: config/tc-i386.c:2280 +#: config/tc-i386.c:2344 +#, c-format msgid "translating to `%s %%%s'" msgstr "" -#: config/tc-i386.c:2551 +#: config/tc-i386.c:2617 +#, c-format msgid "you can't `pop %%cs'" msgstr "" #. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc. -#: config/tc-i386.c:2584 +#: config/tc-i386.c:2650 #, c-format msgid "translating to `%sp'" msgstr "" -#: config/tc-i386.c:2627 +#: config/tc-i386.c:2693 +#, c-format msgid "" "Can't encode registers '%%%s' in the instruction requiring REX prefix.\n" msgstr "" -#: config/tc-i386.c:2679 config/tc-i386.c:2751 config/tc-i386.c:2798 +#: config/tc-i386.c:2755 config/tc-i386.c:2845 config/tc-i386.c:2881 msgid "skipping prefixes on this instruction" msgstr "" -#: config/tc-i386.c:2819 +#: config/tc-i386.c:2901 msgid "16-bit jump out of range" msgstr "" -#: config/tc-i386.c:2828 +#: config/tc-i386.c:2910 #, c-format msgid "can't handle non absolute segment in `%s'" msgstr "" -#: config/tc-i386.c:3085 -msgid "only 1 or 2 immediate operands are allowed" -msgstr "" - -#: config/tc-i386.c:3115 config/tc-i386.c:3353 -msgid "GOT relocations not supported in 16 bit mode" +#: config/tc-i386.c:3217 +#, c-format +msgid "@%s reloc is not supported in %s bit mode" msgstr "" -#: config/tc-i386.c:3152 config/tc-i386.c:3389 -msgid "bad reloc specifier in expression" +#: config/tc-i386.c:3293 +msgid "only 1 or 2 immediate operands are allowed" msgstr "" -#: config/tc-i386.c:3170 config/tc-i386.c:3424 +#: config/tc-i386.c:3316 config/tc-i386.c:3504 #, c-format -msgid "ignoring junk `%s' after expression" +msgid "junk `%s' after expression" msgstr "" #. Missing or bad expr becomes absolute 0. -#: config/tc-i386.c:3177 +#: config/tc-i386.c:3327 #, c-format msgid "missing or invalid immediate expression `%s' taken as 0" msgstr "" -#: config/tc-i386.c:3208 config/tc-i386.c:3454 +#: config/tc-i386.c:3358 config/tc-i386.c:3565 #, c-format msgid "unimplemented segment %s in operand" msgstr "" -#: config/tc-i386.c:3210 config/tc-i386.c:3456 +#: config/tc-i386.c:3360 config/tc-i386.c:3567 #, c-format msgid "unimplemented segment type %d in operand" msgstr "" -#: config/tc-i386.c:3252 config/tc-i386.c:5392 +#: config/tc-i386.c:3404 config/tc-i386.c:5588 #, c-format msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'" msgstr "" -#: config/tc-i386.c:3258 +#: config/tc-i386.c:3411 #, c-format msgid "scale factor of %d without an index register" msgstr "" +#: config/tc-i386.c:3524 +#, c-format +msgid "bad expression used with @%s" +msgstr "" + #. Missing or bad expr becomes absolute 0. -#: config/tc-i386.c:3435 +#: config/tc-i386.c:3546 #, c-format msgid "missing or invalid displacement expression `%s' taken as 0" msgstr "" -#: config/tc-i386.c:3541 +#: config/tc-i386.c:3652 #, c-format msgid "`%s' is not a valid base/index expression" msgstr "" -#: config/tc-i386.c:3545 +#: config/tc-i386.c:3656 #, c-format msgid "`%s' is not a valid %s bit base/index expression" msgstr "" -#: config/tc-i386.c:3620 +#: config/tc-i386.c:3731 #, c-format msgid "bad memory operand `%s'" msgstr "" -#: config/tc-i386.c:3635 +#: config/tc-i386.c:3746 #, c-format msgid "junk `%s' after register" msgstr "" -#: config/tc-i386.c:3644 config/tc-i386.c:3759 config/tc-i386.c:3795 +#: config/tc-i386.c:3755 config/tc-i386.c:3870 config/tc-i386.c:3908 #, c-format msgid "bad register name `%s'" msgstr "" -#: config/tc-i386.c:3652 +#: config/tc-i386.c:3763 msgid "immediate operand illegal with absolute jump" msgstr "" -#: config/tc-i386.c:3674 +#: config/tc-i386.c:3785 #, c-format msgid "too many memory references for `%s'" msgstr "" -#: config/tc-i386.c:3752 +#: config/tc-i386.c:3863 #, c-format msgid "expecting `,' or `)' after index register in `%s'" msgstr "" -#: config/tc-i386.c:3774 +#: config/tc-i386.c:3887 #, c-format msgid "expecting `)' after scale factor in `%s'" msgstr "" -#: config/tc-i386.c:3781 +#: config/tc-i386.c:3894 #, c-format msgid "expecting index register or scale factor after `,'; got '%c'" msgstr "" -#: config/tc-i386.c:3788 +#: config/tc-i386.c:3901 #, c-format msgid "expecting `,' or `)' after base register in `%s'" msgstr "" #. It's not a memory operand; argh! -#: config/tc-i386.c:3829 +#: config/tc-i386.c:3942 #, c-format msgid "invalid char %s beginning operand %d `%s'" msgstr "" -#: config/tc-i386.c:4267 +#: config/tc-i386.c:4117 +msgid "long jump required" +msgstr "" + +#: config/tc-i386.c:4417 msgid "Bad call to md_atof ()" msgstr "" -#: config/tc-i386.c:4431 config/tc-sparc.c:548 -#, c-format -msgid "No compiled in support for %d bit object file format" +#: config/tc-i386.c:4581 +msgid "No compiled in support for x86_64" msgstr "" -#: config/tc-i386.c:4449 +#: config/tc-i386.c:4602 msgid "" " -Q ignored\n" " -V print assembler version number\n" @@ -3583,67 +3789,63 @@ msgid "" " -s ignored\n" msgstr "" -#: config/tc-i386.c:4456 +#: config/tc-i386.c:4609 msgid " -q quieten some warnings\n" msgstr "" -#: config/tc-i386.c:4475 -msgid "Unknown architecture" -msgstr "" - -#: config/tc-i386.c:4515 +#: config/tc-i386.c:4710 config/tc-s390.c:1592 msgid "GOT already in symbol table" msgstr "" -#: config/tc-i386.c:4636 +#: config/tc-i386.c:4842 #, c-format msgid "can not do %d byte relocation" msgstr "" -#: config/tc-i386.c:4697 +#: config/tc-i386.c:4894 config/tc-s390.c:1957 #, c-format msgid "cannot represent relocation type %s" msgstr "" -#: config/tc-i386.c:4994 +#: config/tc-i386.c:5190 #, c-format msgid "too many memory references for '%s'" msgstr "" -#: config/tc-i386.c:5157 +#: config/tc-i386.c:5353 #, c-format msgid "Unknown operand modifier `%s'\n" msgstr "" -#: config/tc-i386.c:5364 +#: config/tc-i386.c:5560 #, c-format msgid "`%s' is not a valid segment register" msgstr "" -#: config/tc-i386.c:5374 config/tc-i386.c:5495 +#: config/tc-i386.c:5570 config/tc-i386.c:5691 msgid "Register scaling only allowed in memory operands." msgstr "" -#: config/tc-i386.c:5405 +#: config/tc-i386.c:5601 msgid "Too many register references in memory operand.\n" msgstr "" -#: config/tc-i386.c:5474 +#: config/tc-i386.c:5670 #, c-format msgid "Syntax error. Expecting a constant. Got `%s'.\n" msgstr "" -#: config/tc-i386.c:5544 +#: config/tc-i386.c:5740 #, c-format msgid "Unrecognized token '%s'" msgstr "" -#: config/tc-i386.c:5561 +#: config/tc-i386.c:5757 #, c-format msgid "Unexpected token `%s'\n" msgstr "" -#: config/tc-i386.c:5705 +#: config/tc-i386.c:5901 #, c-format msgid "Unrecognized token `%s'\n" msgstr "" @@ -3652,7 +3854,7 @@ msgstr "" msgid "Unknown temporary pseudo register" msgstr "" -#: config/tc-i860.c:181 config/tc-mips.c:1027 +#: config/tc-i860.c:181 config/tc-mips.c:1248 #, c-format msgid "internal error: can't hash `%s': %s\n" msgstr "" @@ -3689,7 +3891,7 @@ msgstr "" msgid "Illegal operands for %s" msgstr "" -#: config/tc-i860.c:873 config/tc-sparc.c:2730 +#: config/tc-i860.c:873 config/tc-sparc.c:2731 msgid "bad segment" msgstr "" @@ -3743,54 +3945,54 @@ msgstr "" msgid "5-bit field must be absolute" msgstr "" -#: config/tc-i860.c:1306 config/tc-i860.c:1329 +#: config/tc-i860.c:1305 config/tc-i860.c:1328 msgid "A branch offset requires 0 MOD 4 alignment" msgstr "" -#: config/tc-i860.c:1350 +#: config/tc-i860.c:1349 #, c-format msgid "Unrecognized fix-up (0x%08x)" msgstr "" -#: config/tc-i860.h:82 +#: config/tc-i860.h:80 msgid "i860_convert_frag\n" msgstr "" -#: config/tc-i960.c:549 +#: config/tc-i960.c:550 #, c-format msgid "Hashing returned \"%s\"." msgstr "" #. Offset of last character in opcode mnemonic -#: config/tc-i960.c:583 +#: config/tc-i960.c:584 msgid "branch prediction invalid on this opcode" msgstr "" -#: config/tc-i960.c:623 +#: config/tc-i960.c:624 #, c-format msgid "invalid opcode, \"%s\"." msgstr "" -#: config/tc-i960.c:628 +#: config/tc-i960.c:629 #, c-format msgid "improper number of operands. expecting %d, got %d" msgstr "" -#: config/tc-i960.c:860 +#: config/tc-i960.c:861 #, c-format msgid "Fixup of %ld too large for field width of %d" msgstr "" -#: config/tc-i960.c:977 +#: config/tc-i960.c:978 #, c-format msgid "invalid architecture %s" msgstr "" -#: config/tc-i960.c:997 +#: config/tc-i960.c:998 msgid "I960 options:\n" msgstr "" -#: config/tc-i960.c:1000 +#: config/tc-i960.c:1001 msgid "" "\n" "\t\t\tspecify variant of 960 architecture\n" @@ -3801,205 +4003,208 @@ msgid "" "\t\t\tlong displacements\n" msgstr "" -#: config/tc-i960.c:1403 +#: config/tc-i960.c:1404 msgid "too many operands" msgstr "" -#: config/tc-i960.c:1462 config/tc-i960.c:1689 +#: config/tc-i960.c:1463 config/tc-i960.c:1690 msgid "expression syntax error" msgstr "" -#: config/tc-i960.c:1500 +#: config/tc-i960.c:1501 msgid "attempt to branch into different segment" msgstr "" -#: config/tc-i960.c:1504 +#: config/tc-i960.c:1505 #, c-format msgid "target of %s instruction must be a label" msgstr "" -#: config/tc-i960.c:1543 +#: config/tc-i960.c:1544 msgid "unmatched '['" msgstr "" -#: config/tc-i960.c:1554 +#: config/tc-i960.c:1555 msgid "garbage after index spec ignored" msgstr "" #. We never moved: there was no opcode either! -#: config/tc-i960.c:1620 +#: config/tc-i960.c:1621 msgid "missing opcode" msgstr "" -#: config/tc-i960.c:1923 -msgid "invalid constant" -msgstr "" - -#: config/tc-i960.c:2035 +#: config/tc-i960.c:2036 msgid "invalid index register" msgstr "" -#: config/tc-i960.c:2058 +#: config/tc-i960.c:2059 msgid "invalid scale factor" msgstr "" -#: config/tc-i960.c:2241 +#: config/tc-i960.c:2242 msgid "unaligned register" msgstr "" -#: config/tc-i960.c:2264 +#: config/tc-i960.c:2265 msgid "no such sfr in this architecture" msgstr "" -#: config/tc-i960.c:2302 +#: config/tc-i960.c:2303 msgid "illegal literal" msgstr "" #. Should not happen: see block comment above -#: config/tc-i960.c:2532 +#: config/tc-i960.c:2533 #, c-format msgid "Trying to 'bal' to %s" msgstr "" -#: config/tc-i960.c:2543 +#: config/tc-i960.c:2544 msgid "Looks like a proc, but can't tell what kind.\n" msgstr "" -#: config/tc-i960.c:2574 +#: config/tc-i960.c:2575 msgid "should have 1 or 2 operands" msgstr "" -#: config/tc-i960.c:2583 config/tc-i960.c:2602 +#: config/tc-i960.c:2584 config/tc-i960.c:2603 #, c-format msgid "Redefining leafproc %s" msgstr "" -#: config/tc-i960.c:2633 +#: config/tc-i960.c:2634 msgid "should have two operands" msgstr "" -#: config/tc-i960.c:2643 +#: config/tc-i960.c:2644 msgid "'entry_num' must be absolute number in [0,31]" msgstr "" -#: config/tc-i960.c:2652 +#: config/tc-i960.c:2653 #, c-format msgid "Redefining entrynum for sysproc %s" msgstr "" -#: config/tc-i960.c:2759 +#: config/tc-i960.c:2760 msgid "architecture of opcode conflicts with that of earlier instruction(s)" msgstr "" -#: config/tc-i960.c:2780 +#: config/tc-i960.c:2781 msgid "big endian mode is not supported" msgstr "" -#: config/tc-i960.c:2782 +#: config/tc-i960.c:2783 #, c-format msgid "ignoring unrecognized .endian type `%s'" msgstr "" -#: config/tc-i960.c:3064 +#: config/tc-i960.c:3055 #, c-format msgid "leafproc symbol '%s' undefined" msgstr "" -#: config/tc-i960.c:3074 +#: config/tc-i960.c:3065 #, c-format msgid "Warning: making leafproc entries %s and %s both global\n" msgstr "" -#: config/tc-i960.c:3183 +#: config/tc-i960.c:3174 msgid "option --link-relax is only supported in b.out format" msgstr "" -#: config/tc-i960.c:3226 +#: config/tc-i960.c:3217 write.c:2670 msgid "callj to difference of two symbols" msgstr "" -#: config/tc-ia64.c:4077 +#: config/tc-ia64.c:1052 +msgid "Unwind directive not followed by an instruction." +msgstr "" + +#: config/tc-ia64.c:4416 msgid "Register name expected" msgstr "" -#: config/tc-ia64.c:4082 config/tc-ia64.c:4368 +#: config/tc-ia64.c:4421 config/tc-ia64.c:4707 msgid "Comma expected" msgstr "" -#: config/tc-ia64.c:4090 +#: config/tc-ia64.c:4429 msgid "Register value annotation ignored" msgstr "" -#: config/tc-ia64.c:4114 +#: config/tc-ia64.c:4453 msgid "Directive invalid within a bundle" msgstr "" -#: config/tc-ia64.c:4181 +#: config/tc-ia64.c:4520 msgid "Missing predicate relation type" msgstr "" -#: config/tc-ia64.c:4197 +#: config/tc-ia64.c:4536 msgid "Unrecognized predicate relation type" msgstr "" -#: config/tc-ia64.c:4217 config/tc-ia64.c:4242 +#: config/tc-ia64.c:4556 config/tc-ia64.c:4581 msgid "Predicate register expected" msgstr "" -#: config/tc-ia64.c:4229 +#: config/tc-ia64.c:4568 msgid "Duplicate predicate register ignored" msgstr "" -#: config/tc-ia64.c:4251 +#: config/tc-ia64.c:4590 msgid "Bad register range" msgstr "" -#: config/tc-ia64.c:4279 +#: config/tc-ia64.c:4618 msgid "Predicate source and target required" msgstr "" -#: config/tc-ia64.c:4281 config/tc-ia64.c:4293 +#: config/tc-ia64.c:4620 config/tc-ia64.c:4632 msgid "Use of p0 is not valid in this context" msgstr "" -#: config/tc-ia64.c:4288 +#: config/tc-ia64.c:4627 msgid "At least two PR arguments expected" msgstr "" -#: config/tc-ia64.c:4302 +#: config/tc-ia64.c:4641 msgid "At least one PR argument expected" msgstr "" -#: config/tc-ia64.c:4338 +#: config/tc-ia64.c:4677 #, c-format msgid "Inserting \"%s\" into entry hint table failed: %s" msgstr "" #. FIXME -- need 62-bit relocation type -#: config/tc-ia64.c:4758 +#: config/tc-ia64.c:5147 msgid "62-bit relocation not yet implemented" msgstr "" -#: config/tc-ia64.c:4820 +#. XXX technically, this is wrong: we should not be issuing warning +#. messages until we're sure this instruction pattern is going to +#. be used! +#: config/tc-ia64.c:5220 msgid "lower 16 bits of mask ignored" msgstr "" -#: config/tc-ia64.c:5317 +#: config/tc-ia64.c:5775 msgid "Value truncated to 62 bits" msgstr "" -#: config/tc-ia64.c:5668 +#: config/tc-ia64.c:6126 msgid "" "Additional NOP may be necessary to workaround Itanium processor A/B step " "errata" msgstr "" -#: config/tc-ia64.c:5849 +#: config/tc-ia64.c:6309 #, c-format msgid "Unrecognized option '-x%s'" msgstr "" -#: config/tc-ia64.c:5877 +#: config/tc-ia64.c:6337 msgid "" "IA-64 options:\n" " -milp32|-milp64|-mlp64|-mp64\tselect data model (default -mlp64)\n" @@ -4009,33 +4214,37 @@ msgid "" " -xdebug\t\t debug dependency violation checker\n" msgstr "" -#: config/tc-ia64.c:6147 config/tc-mips.c:1014 +#: config/tc-ia64.c:6351 +msgid "--gstabs is not supported for ia64" +msgstr "" + +#: config/tc-ia64.c:6618 config/tc-mips.c:1227 msgid "Could not set architecture and machine" msgstr "" -#: config/tc-ia64.c:6223 +#: config/tc-ia64.c:6725 msgid "Explicit stops are ignored in auto mode" msgstr "" -#: config/tc-ia64.c:6273 +#: config/tc-ia64.c:6775 msgid "Found '{' after explicit switch to automatic mode" msgstr "" -#: config/tc-ia64.c:6686 +#: config/tc-ia64.c:7222 #, c-format msgid "Unhandled dependency %s for %s (%s), note %d" msgstr "" -#: config/tc-ia64.c:7962 +#: config/tc-ia64.c:8498 #, c-format msgid "Unrecognized dependency specifier %d\n" msgstr "" -#: config/tc-ia64.c:8753 +#: config/tc-ia64.c:9300 msgid "Only the first path encountering the conflict is reported" msgstr "" -#: config/tc-ia64.c:8756 +#: config/tc-ia64.c:9303 msgid "This is the location of the conflicting usage" msgstr "" @@ -4115,91 +4324,94 @@ msgstr "" msgid " -cpu-desc provide runtime cpu description file\n" msgstr "" -#: config/tc-m32r.c:688 +#: config/tc-m32r.c:691 msgid "Instructions write to the same destination register." msgstr "" -#: config/tc-m32r.c:696 +#: config/tc-m32r.c:699 msgid "Instructions do not use parallel execution pipelines." msgstr "" -#: config/tc-m32r.c:703 +#: config/tc-m32r.c:706 msgid "Instructions share the same execution pipeline" msgstr "" -#: config/tc-m32r.c:773 config/tc-m32r.c:870 +#: config/tc-m32r.c:776 config/tc-m32r.c:872 #, c-format msgid "not a 16 bit instruction '%s'" msgstr "" -#: config/tc-m32r.c:780 config/tc-m32r.c:877 config/tc-m32r.c:1033 +#: config/tc-m32r.c:783 config/tc-m32r.c:879 config/tc-m32r.c:1035 #, c-format msgid "unknown instruction '%s'" msgstr "" -#: config/tc-m32r.c:789 config/tc-m32r.c:884 config/tc-m32r.c:1040 +#: config/tc-m32r.c:792 config/tc-m32r.c:886 config/tc-m32r.c:1042 #, c-format msgid "instruction '%s' is for the M32RX only" msgstr "" -#: config/tc-m32r.c:798 config/tc-m32r.c:893 +#: config/tc-m32r.c:801 config/tc-m32r.c:895 #, c-format msgid "instruction '%s' cannot be executed in parallel." msgstr "" -#: config/tc-m32r.c:854 config/tc-m32r.c:918 config/tc-m32r.c:1090 +#: config/tc-m32r.c:856 config/tc-m32r.c:920 config/tc-m32r.c:1092 msgid "internal error: lookup/get operands failed" msgstr "" -#: config/tc-m32r.c:903 +#: config/tc-m32r.c:905 #, c-format msgid "'%s': only the NOP instruction can be issued in parallel on the m32r" msgstr "" -#: config/tc-m32r.c:932 +#: config/tc-m32r.c:934 #, c-format msgid "" "%s: output of 1st instruction is the same as an input to 2nd instruction - " "is this intentional ?" msgstr "" -#: config/tc-m32r.c:936 +#: config/tc-m32r.c:938 #, c-format msgid "" "%s: output of 2nd instruction is the same as an input to 1st instruction - " "is this intentional ?" msgstr "" -#: config/tc-m32r.c:1250 config/tc-ppc.c:1459 config/tc-ppc.c:3681 read.c:1358 +#: config/tc-m32r.c:1252 config/tc-ppc.c:1571 config/tc-ppc.c:3966 msgid "Expected comma after symbol-name: rest of line ignored." msgstr "" -#: config/tc-m32r.c:1260 +#: config/tc-m32r.c:1262 #, c-format msgid ".SCOMMon length (%ld.) <0! Ignored." msgstr "" -#: config/tc-m32r.c:1274 config/tc-ppc.c:1481 config/tc-ppc.c:2392 -#: config/tc-ppc.c:3705 +#: config/tc-m32r.c:1276 config/tc-ppc.c:1593 config/tc-ppc.c:2615 +#: config/tc-ppc.c:3990 msgid "ignoring bad alignment" msgstr "" -#: config/tc-m32r.c:1301 config/tc-ppc.c:1492 config/tc-ppc.c:3717 read.c:1382 -#: read.c:2108 +#: config/tc-m32r.c:1288 config/tc-ppc.c:1630 config/tc-v850.c:383 +msgid "Common alignment not a power of 2" +msgstr "" + +#: config/tc-m32r.c:1303 config/tc-ppc.c:1604 config/tc-ppc.c:4002 #, c-format msgid "Ignoring attempt to re-define symbol `%s'." msgstr "" -#: config/tc-m32r.c:1310 +#: config/tc-m32r.c:1312 #, c-format msgid "Length of .scomm \"%s\" is already %ld. Not changed to %ld." msgstr "" -#: config/tc-m32r.c:1786 +#: config/tc-m32r.c:1789 msgid "Unmatched high/shigh reloc" msgstr "" -#: config/tc-m68hc11.c:305 +#: config/tc-m68hc11.c:327 #, c-format msgid "" "Motorola 68HC11/68HC12 options:\n" @@ -4215,55 +4427,55 @@ msgid "" " (used for testing)\n" msgstr "" -#: config/tc-m68hc11.c:346 +#: config/tc-m68hc11.c:368 #, c-format msgid "Default target `%s' is not supported." msgstr "" #. Dump the opcode statistics table. -#: config/tc-m68hc11.c:365 +#: config/tc-m68hc11.c:387 msgid "Name # Modes Min ops Max ops Modes mask # Used\n" msgstr "" -#: config/tc-m68hc11.c:415 +#: config/tc-m68hc11.c:437 #, c-format msgid "Option `%s' is not recognized." msgstr "" -#: config/tc-m68hc11.c:636 +#: config/tc-m68hc11.c:658 msgid "#<imm8>" msgstr "" -#: config/tc-m68hc11.c:645 +#: config/tc-m68hc11.c:667 msgid "#<imm16>" msgstr "" -#: config/tc-m68hc11.c:654 config/tc-m68hc11.c:663 +#: config/tc-m68hc11.c:676 config/tc-m68hc11.c:685 msgid "<imm8>,X" msgstr "" -#: config/tc-m68hc11.c:681 +#: config/tc-m68hc11.c:703 msgid "*<abs8>" msgstr "" -#: config/tc-m68hc11.c:693 +#: config/tc-m68hc11.c:715 msgid "#<mask>" msgstr "" -#: config/tc-m68hc11.c:703 +#: config/tc-m68hc11.c:725 #, c-format msgid "symbol%d" msgstr "" -#: config/tc-m68hc11.c:705 +#: config/tc-m68hc11.c:727 msgid "<abs>" msgstr "" -#: config/tc-m68hc11.c:724 +#: config/tc-m68hc11.c:746 msgid "<label>" msgstr "" -#: config/tc-m68hc11.c:740 +#: config/tc-m68hc11.c:762 #, c-format msgid "" "# Example of `%s' instructions\n" @@ -4271,596 +4483,604 @@ msgid "" "_start:\n" msgstr "" -#: config/tc-m68hc11.c:788 +#: config/tc-m68hc11.c:810 #, c-format msgid "Instruction `%s' is not recognized." msgstr "" -#: config/tc-m68hc11.c:793 +#: config/tc-m68hc11.c:815 #, c-format msgid "Instruction formats for `%s':" msgstr "" -#: config/tc-m68hc11.c:926 +#: config/tc-m68hc11.c:948 #, c-format msgid "Immediate operand is not allowed for operand %d." msgstr "" -#: config/tc-m68hc11.c:952 +#: config/tc-m68hc11.c:974 msgid "Indirect indexed addressing is not valid for 68HC11." msgstr "" -#: config/tc-m68hc11.c:972 +#: config/tc-m68hc11.c:994 msgid "Spurious `,' or bad indirect register addressing mode." msgstr "" -#: config/tc-m68hc11.c:988 +#: config/tc-m68hc11.c:1010 msgid "Missing second register or offset for indexed-indirect mode." msgstr "" -#: config/tc-m68hc11.c:998 +#: config/tc-m68hc11.c:1020 msgid "Missing second register for indexed-indirect mode." msgstr "" -#: config/tc-m68hc11.c:1014 +#: config/tc-m68hc11.c:1036 msgid "Missing `]' to close indexed-indirect mode." msgstr "" -#: config/tc-m68hc11.c:1058 +#: config/tc-m68hc11.c:1080 msgid "Illegal operand." msgstr "" -#: config/tc-m68hc11.c:1063 +#: config/tc-m68hc11.c:1085 msgid "Missing operand." msgstr "" -#: config/tc-m68hc11.c:1115 +#: config/tc-m68hc11.c:1137 msgid "Pre-increment mode is not valid for 68HC11" msgstr "" -#: config/tc-m68hc11.c:1128 +#: config/tc-m68hc11.c:1150 msgid "Wrong register in register indirect mode." msgstr "" -#: config/tc-m68hc11.c:1136 +#: config/tc-m68hc11.c:1158 msgid "Missing `]' to close register indirect operand." msgstr "" -#: config/tc-m68hc11.c:1153 +#: config/tc-m68hc11.c:1175 msgid "Post-decrement mode is not valid for 68HC11." msgstr "" -#: config/tc-m68hc11.c:1161 +#: config/tc-m68hc11.c:1183 msgid "Post-increment mode is not valid for 68HC11." msgstr "" -#: config/tc-m68hc11.c:1178 +#: config/tc-m68hc11.c:1200 msgid "Invalid indexed indirect mode." msgstr "" -#: config/tc-m68hc11.c:1272 +#: config/tc-m68hc11.c:1294 #, c-format msgid "Trap id `%ld' is out of range." msgstr "" -#: config/tc-m68hc11.c:1276 +#: config/tc-m68hc11.c:1298 msgid "Trap id must be within [0x30..0x39] or [0x40..0xff]." msgstr "" -#: config/tc-m68hc11.c:1283 +#: config/tc-m68hc11.c:1305 #, c-format msgid "Operand out of 8-bit range: `%ld'." msgstr "" -#: config/tc-m68hc11.c:1290 +#: config/tc-m68hc11.c:1312 msgid "The trap id must be a constant." msgstr "" -#: config/tc-m68hc11.c:1315 +#: config/tc-m68hc11.c:1337 #, c-format msgid "Operand `%x' not recognized in fixup8." msgstr "" -#: config/tc-m68hc11.c:1335 +#: config/tc-m68hc11.c:1357 #, c-format msgid "Operand out of 16-bit range: `%ld'." msgstr "" -#: config/tc-m68hc11.c:1356 +#: config/tc-m68hc11.c:1378 #, c-format msgid "Operand `%x' not recognized in fixup16." msgstr "" -#: config/tc-m68hc11.c:1374 +#: config/tc-m68hc11.c:1396 #, c-format msgid "Unexpected branch conversion with `%x'" msgstr "" -#: config/tc-m68hc11.c:1463 config/tc-m68hc11.c:1592 +#: config/tc-m68hc11.c:1483 config/tc-m68hc11.c:1612 #, c-format msgid "Operand out of range for a relative branch: `%ld'" msgstr "" -#: config/tc-m68hc11.c:1560 +#: config/tc-m68hc11.c:1580 msgid "Invalid register for dbcc/tbcc instruction." msgstr "" -#: config/tc-m68hc11.c:1651 +#: config/tc-m68hc11.c:1671 #, c-format msgid "Increment/decrement value is out of range: `%ld'." msgstr "" -#: config/tc-m68hc11.c:1662 +#: config/tc-m68hc11.c:1682 msgid "Expecting a register." msgstr "" -#: config/tc-m68hc11.c:1677 +#: config/tc-m68hc11.c:1697 msgid "Invalid register for post/pre increment." msgstr "" -#: config/tc-m68hc11.c:1707 +#: config/tc-m68hc11.c:1727 msgid "Invalid register." msgstr "" -#: config/tc-m68hc11.c:1714 +#: config/tc-m68hc11.c:1734 #, c-format msgid "Offset out of 16-bit range: %ld." msgstr "" -#: config/tc-m68hc11.c:1719 +#: config/tc-m68hc11.c:1739 #, c-format msgid "Offset out of 5-bit range for movw/movb insn: %ld." msgstr "" -#: config/tc-m68hc11.c:1774 +#: config/tc-m68hc11.c:1805 msgid "Expecting register D for indexed indirect mode." msgstr "" -#: config/tc-m68hc11.c:1776 +#: config/tc-m68hc11.c:1807 msgid "Indexed indirect mode is not allowed for movb/movw." msgstr "" -#: config/tc-m68hc11.c:1793 +#: config/tc-m68hc11.c:1824 msgid "Invalid accumulator register." msgstr "" -#: config/tc-m68hc11.c:1818 +#: config/tc-m68hc11.c:1849 msgid "Invalid indexed register." msgstr "" -#: config/tc-m68hc11.c:1826 +#: config/tc-m68hc11.c:1857 msgid "Addressing mode not implemented yet." msgstr "" -#: config/tc-m68hc11.c:1841 +#: config/tc-m68hc11.c:1872 msgid "Invalid source register for this instruction, use 'tfr'." msgstr "" -#: config/tc-m68hc11.c:1843 +#: config/tc-m68hc11.c:1874 msgid "Invalid source register." msgstr "" -#: config/tc-m68hc11.c:1848 +#: config/tc-m68hc11.c:1879 msgid "Invalid destination register for this instruction, use 'tfr'." msgstr "" -#: config/tc-m68hc11.c:1850 +#: config/tc-m68hc11.c:1881 msgid "Invalid destination register." msgstr "" -#: config/tc-m68hc11.c:1939 +#: config/tc-m68hc11.c:1966 msgid "Invalid indexed register, expecting register X." msgstr "" -#: config/tc-m68hc11.c:1941 +#: config/tc-m68hc11.c:1968 msgid "Invalid indexed register, expecting register Y." msgstr "" -#: config/tc-m68hc11.c:2238 +#: config/tc-m68hc11.c:2260 msgid "No instruction or missing opcode." msgstr "" -#: config/tc-m68hc11.c:2303 +#: config/tc-m68hc11.c:2325 #, c-format msgid "Opcode `%s' is not recognized." msgstr "" -#: config/tc-m68hc11.c:2325 +#: config/tc-m68hc11.c:2347 #, c-format msgid "Garbage at end of instruction: `%s'." msgstr "" -#: config/tc-m68hc11.c:2348 +#: config/tc-m68hc11.c:2370 #, c-format msgid "Invalid operand for `%s'" msgstr "" -#: config/tc-m68hc11.c:2405 +#: config/tc-m68hc11.c:2427 #, c-format msgid "Relocation %d is not supported by object file format." msgstr "" -#: config/tc-m68hc11.c:2571 +#: config/tc-m68hc11.c:2606 msgid "bra or bsr with undefined symbol." msgstr "" -#: config/tc-m68hc11.c:2683 +#: config/tc-m68hc11.c:2676 config/tc-m68hc11.c:2726 #, c-format msgid "Subtype %d is not recognized." msgstr "" -#: config/tc-m68hc11.c:2720 +#: config/tc-m68hc11.c:2759 msgid "Expression too complex." msgstr "" -#: config/tc-m68hc11.c:2749 +#: config/tc-m68hc11.c:2787 msgid "Value out of 16-bit range." msgstr "" -#: config/tc-m68hc11.c:2772 +#: config/tc-m68hc11.c:2810 #, c-format msgid "Value %ld too large for 8-bit PC-relative branch." msgstr "" -#: config/tc-m68hc11.c:2779 +#: config/tc-m68hc11.c:2817 #, c-format msgid "Auto increment/decrement offset '%ld' is out of range." msgstr "" -#: config/tc-m68hc11.c:2790 +#: config/tc-m68hc11.c:2828 #, c-format msgid "Line %d: unknown relocation type: 0x%x." msgstr "" -#: config/tc-m68k.c:680 +#: config/tc-m68k.c:684 msgid "Unknown PC relative instruction" msgstr "" -#: config/tc-m68k.c:806 +#: config/tc-m68k.c:823 #, c-format msgid "Can not do %d byte pc-relative relocation" msgstr "" -#: config/tc-m68k.c:808 +#: config/tc-m68k.c:825 #, c-format msgid "Can not do %d byte pc-relative pic relocation" msgstr "" -#: config/tc-m68k.c:813 +#: config/tc-m68k.c:830 #, c-format msgid "Can not do %d byte relocation" msgstr "" -#: config/tc-m68k.c:815 +#: config/tc-m68k.c:832 #, c-format msgid "Can not do %d byte pic relocation" msgstr "" -#: config/tc-m68k.c:919 config/tc-mips.c:11242 +#: config/tc-m68k.c:904 +#, c-format +msgid "Unable to produce reloc against symbol '%s'" +msgstr "" + +#: config/tc-m68k.c:948 config/tc-mips.c:12429 #, c-format msgid "Cannot make %s relocation PC relative" msgstr "" -#: config/tc-m68k.c:1032 config/tc-tahoe.c:1503 config/tc-vax.c:1766 +#: config/tc-m68k.c:1041 config/tc-tahoe.c:1495 config/tc-vax.c:1762 msgid "No operator" msgstr "" -#: config/tc-m68k.c:1062 config/tc-tahoe.c:1520 config/tc-vax.c:1783 +#: config/tc-m68k.c:1071 config/tc-tahoe.c:1512 config/tc-vax.c:1779 msgid "Unknown operator" msgstr "" -#: config/tc-m68k.c:1837 +#: config/tc-m68k.c:1846 msgid "invalid instruction for this architecture; needs " msgstr "" -#: config/tc-m68k.c:1842 +#: config/tc-m68k.c:1851 msgid "fpu (68040, 68060 or 68881/68882)" msgstr "" -#: config/tc-m68k.c:1845 +#: config/tc-m68k.c:1854 msgid "mmu (68030 or 68851)" msgstr "" -#: config/tc-m68k.c:1848 +#: config/tc-m68k.c:1857 msgid "68020 or higher" msgstr "" -#: config/tc-m68k.c:1851 +#: config/tc-m68k.c:1860 msgid "68000 or higher" msgstr "" -#: config/tc-m68k.c:1854 +#: config/tc-m68k.c:1863 msgid "68010 or higher" msgstr "" -#: config/tc-m68k.c:1883 +#: config/tc-m68k.c:1892 msgid "operands mismatch" msgstr "" -#: config/tc-m68k.c:1940 config/tc-m68k.c:1946 config/tc-m68k.c:1952 +#: config/tc-m68k.c:1949 config/tc-m68k.c:1955 config/tc-m68k.c:1961 +#: config/tc-mmix.c:2448 config/tc-mmix.c:2472 msgid "operand out of range" msgstr "" -#: config/tc-m68k.c:2009 +#: config/tc-m68k.c:2018 #, c-format msgid "Bignum too big for %c format; truncated" msgstr "" -#: config/tc-m68k.c:2077 +#: config/tc-m68k.c:2086 msgid "displacement too large for this architecture; needs 68020 or higher" msgstr "" -#: config/tc-m68k.c:2187 +#: config/tc-m68k.c:2196 msgid "" "scale factor invalid on this architecture; needs cpu32 or 68020 or higher" msgstr "" -#: config/tc-m68k.c:2192 +#: config/tc-m68k.c:2201 msgid "invalid index size for coldfire" msgstr "" -#: config/tc-m68k.c:2245 +#: config/tc-m68k.c:2254 msgid "Forcing byte displacement" msgstr "" -#: config/tc-m68k.c:2247 +#: config/tc-m68k.c:2256 msgid "byte displacement out of range" msgstr "" -#: config/tc-m68k.c:2294 config/tc-m68k.c:2332 +#: config/tc-m68k.c:2303 config/tc-m68k.c:2341 msgid "invalid operand mode for this architecture; needs 68020 or higher" msgstr "" -#: config/tc-m68k.c:2318 config/tc-m68k.c:2352 +#: config/tc-m68k.c:2327 config/tc-m68k.c:2361 msgid ":b not permitted; defaulting to :w" msgstr "" -#: config/tc-m68k.c:2429 +#: config/tc-m68k.c:2438 msgid "unsupported byte value; use a different suffix" msgstr "" -#: config/tc-m68k.c:2443 +#: config/tc-m68k.c:2452 msgid "unknown/incorrect operand" msgstr "" -#: config/tc-m68k.c:2476 config/tc-m68k.c:2484 config/tc-m68k.c:2491 -#: config/tc-m68k.c:2498 +#: config/tc-m68k.c:2485 config/tc-m68k.c:2493 config/tc-m68k.c:2500 +#: config/tc-m68k.c:2507 msgid "out of range" msgstr "" -#: config/tc-m68k.c:2548 +#: config/tc-m68k.c:2553 msgid "Can't use long branches on 68000/68010/5200" msgstr "" -#: config/tc-m68k.c:2658 +#: config/tc-m68k.c:2663 msgid "Expression out of range, using 0" msgstr "" -#: config/tc-m68k.c:2770 config/tc-m68k.c:2786 +#: config/tc-m68k.c:2775 config/tc-m68k.c:2791 msgid "Floating point register in register list" msgstr "" -#: config/tc-m68k.c:2776 +#: config/tc-m68k.c:2781 msgid "Wrong register in floating-point reglist" msgstr "" -#: config/tc-m68k.c:2792 +#: config/tc-m68k.c:2797 msgid "incorrect register in reglist" msgstr "" -#: config/tc-m68k.c:2798 +#: config/tc-m68k.c:2803 msgid "wrong register in floating-point reglist" msgstr "" -#: config/tc-m68k.c:2874 -msgid "failed sanity check" -msgstr "" - #. ERROR -#: config/tc-m68k.c:3239 +#: config/tc-m68k.c:3244 msgid "Extra )" msgstr "" #. ERROR -#: config/tc-m68k.c:3250 +#: config/tc-m68k.c:3255 msgid "Missing )" msgstr "" -#: config/tc-m68k.c:3267 +#: config/tc-m68k.c:3272 msgid "Missing operand" msgstr "" -#: config/tc-m68k.c:3599 +#: config/tc-m68k.c:3604 #, c-format msgid "%s -- statement `%s' ignored" msgstr "" -#: config/tc-m68k.c:3643 +#: config/tc-m68k.c:3653 #, c-format msgid "Don't know how to figure width of %c in md_assemble()" msgstr "" -#: config/tc-m68k.c:3811 config/tc-m68k.c:3849 +#: config/tc-m68k.c:3835 config/tc-m68k.c:3873 #, c-format msgid "Internal Error: Can't find %s in hash table" msgstr "" -#: config/tc-m68k.c:3814 config/tc-m68k.c:3852 +#: config/tc-m68k.c:3838 config/tc-m68k.c:3876 #, c-format msgid "Internal Error: Can't hash %s: %s" msgstr "" -#: config/tc-m68k.c:3980 +#: config/tc-m68k.c:4002 #, c-format msgid "unrecognized default cpu `%s' ???" msgstr "" -#: config/tc-m68k.c:3992 +#: config/tc-m68k.c:4014 msgid "68040 and 68851 specified; mmu instructions may assemble incorrectly" msgstr "" -#: config/tc-m68k.c:4012 +#: config/tc-m68k.c:4034 msgid "options for 68881 and no-68881 both given" msgstr "" -#: config/tc-m68k.c:4014 +#: config/tc-m68k.c:4036 msgid "options for 68851 and no-68851 both given" msgstr "" -#: config/tc-m68k.c:4085 +#: config/tc-m68k.c:4107 #, c-format msgid "text label `%s' aligned to odd boundary" msgstr "" -#: config/tc-m68k.c:4302 +#: config/tc-m68k.c:4326 msgid "invalid byte branch offset" msgstr "" -#: config/tc-m68k.c:4360 +#: config/tc-m68k.c:4363 msgid "short branch with zero offset: use :w" msgstr "" -#: config/tc-m68k.c:4896 config/tc-m68k.c:4907 +#: config/tc-m68k.c:4832 config/tc-m68k.c:4843 msgid "expression out of range: defaulting to 1" msgstr "" -#: config/tc-m68k.c:4939 +#: config/tc-m68k.c:4875 msgid "expression out of range: defaulting to 0" msgstr "" -#: config/tc-m68k.c:4972 config/tc-m68k.c:4984 +#: config/tc-m68k.c:4908 config/tc-m68k.c:4920 #, c-format msgid "Can't deal with expression; defaulting to %ld" msgstr "" -#: config/tc-m68k.c:4998 +#: config/tc-m68k.c:4934 msgid "expression doesn't fit in BYTE" msgstr "" -#: config/tc-m68k.c:5002 +#: config/tc-m68k.c:4938 msgid "expression doesn't fit in WORD" msgstr "" -#: config/tc-m68k.c:5095 +#: config/tc-m68k.c:5031 #, c-format msgid "%s: unrecognized processor name" msgstr "" -#: config/tc-m68k.c:5160 +#: config/tc-m68k.c:5096 msgid "bad coprocessor id" msgstr "" -#: config/tc-m68k.c:5166 +#: config/tc-m68k.c:5102 msgid "unrecognized fopt option" msgstr "" -#: config/tc-m68k.c:5300 +#: config/tc-m68k.c:5236 #, c-format msgid "option `%s' may not be negated" msgstr "" -#: config/tc-m68k.c:5311 +#: config/tc-m68k.c:5247 #, c-format msgid "option `%s' not recognized" msgstr "" -#: config/tc-m68k.c:5344 +#: config/tc-m68k.c:5280 msgid "bad format of OPT NEST=depth" msgstr "" -#: config/tc-m68k.c:5407 +#: config/tc-m68k.c:5343 msgid "missing label" msgstr "" -#: config/tc-m68k.c:5431 config/tc-m68k.c:5460 +#: config/tc-m68k.c:5367 config/tc-m68k.c:5396 msgid "bad register list" msgstr "" -#: config/tc-m68k.c:5433 +#: config/tc-m68k.c:5369 #, c-format msgid "bad register list: %s" msgstr "" -#: config/tc-m68k.c:5531 +#: config/tc-m68k.c:5467 msgid "restore without save" msgstr "" -#: config/tc-m68k.c:5708 config/tc-m68k.c:6057 +#: config/tc-m68k.c:5641 config/tc-m68k.c:6026 msgid "syntax error in structured control directive" msgstr "" -#: config/tc-m68k.c:5759 +#: config/tc-m68k.c:5690 msgid "missing condition code in structured control directive" msgstr "" -#: config/tc-m68k.c:6091 +#: config/tc-m68k.c:5762 +#, c-format +msgid "" +"Condition <%c%c> in structured control directive can not be encoded correctly" +msgstr "" + +#: config/tc-m68k.c:6069 msgid "missing then" msgstr "" -#: config/tc-m68k.c:6173 +#: config/tc-m68k.c:6151 msgid "else without matching if" msgstr "" -#: config/tc-m68k.c:6207 +#: config/tc-m68k.c:6185 msgid "endi without matching if" msgstr "" -#: config/tc-m68k.c:6248 +#: config/tc-m68k.c:6226 msgid "break outside of structured loop" msgstr "" -#: config/tc-m68k.c:6287 +#: config/tc-m68k.c:6265 msgid "next outside of structured loop" msgstr "" -#: config/tc-m68k.c:6339 +#: config/tc-m68k.c:6317 msgid "missing =" msgstr "" -#: config/tc-m68k.c:6377 +#: config/tc-m68k.c:6355 msgid "missing to or downto" msgstr "" -#: config/tc-m68k.c:6413 config/tc-m68k.c:6447 config/tc-m68k.c:6657 +#: config/tc-m68k.c:6391 config/tc-m68k.c:6425 config/tc-m68k.c:6644 msgid "missing do" msgstr "" -#: config/tc-m68k.c:6550 +#: config/tc-m68k.c:6528 msgid "endf without for" msgstr "" -#: config/tc-m68k.c:6606 +#: config/tc-m68k.c:6584 msgid "until without repeat" msgstr "" -#: config/tc-m68k.c:6693 +#: config/tc-m68k.c:6680 msgid "endw without while" msgstr "" -#: config/tc-m68k.c:6817 +#: config/tc-m68k.c:6804 #, c-format msgid "unrecognized option `%s'" msgstr "" -#: config/tc-m68k.c:6862 +#: config/tc-m68k.c:6849 #, c-format msgid "unrecognized architecture specification `%s'" msgstr "" -#: config/tc-m68k.c:6932 +#: config/tc-m68k.c:6919 msgid "" "680X0 options:\n" "-l\t\t\tuse 1 word for refs to undefined symbols [default 2]\n" -"-m68000 | -m68008 | -m68010 | -m68020 | -m68030 | -m68040 | -m68060\n" -" | -m68302 | -m68331 | -m68332 | -m68333 | -m68340 | -m68360\n" -" | -mcpu32 | -m5200\n" +"-m68000 | -m68008 | -m68010 | -m68020 | -m68030 | -m68040 | -m68060 |\n" +"-m68302 | -m68331 | -m68332 | -m68333 | -m68340 | -m68360 | -mcpu32 |\n" +"-m5200 | -m5202 | -m5204 | -m5206 | -m5206e | -m5307 | -m5407\n" "\t\t\tspecify variant of 680X0 architecture [default 68020]\n" "-m68881 | -m68882 | -mno-68881 | -mno-68882\n" "\t\t\ttarget has/lacks floating-point coprocessor\n" "\t\t\t[default yes for 68020, 68030, and cpu32]\n" msgstr "" -#: config/tc-m68k.c:6942 +#: config/tc-m68k.c:6929 msgid "" "-m68851 | -mno-68851\n" "\t\t\ttarget has/lacks memory-management unit coprocessor\n" @@ -4873,7 +5093,7 @@ msgid "" "--bitwise-or\t\tdo not treat `|' as a comment character\n" msgstr "" -#: config/tc-m68k.c:6952 +#: config/tc-m68k.c:6939 msgid "" "--base-size-default-16\tbase reg without size is 16 bits\n" "--base-size-default-32\tbase reg without size is 32 bits (default)\n" @@ -4881,82 +5101,68 @@ msgid "" "--disp-size-default-32\tdisplacement with unknown size is 32 bits (default)\n" msgstr "" -#: config/tc-m68k.c:6987 +#: config/tc-m68k.c:6974 #, c-format msgid "Error %s in %s\n" msgstr "" -#: config/tc-m68k.c:6991 +#: config/tc-m68k.c:6978 #, c-format msgid "Opcode(%d.%s): " msgstr "" -#: config/tc-m88k.c:205 +#: config/tc-m88k.c:201 #, c-format msgid "Can't hash instruction '%s':%s" msgstr "" -#: config/tc-m88k.c:257 +#: config/tc-m88k.c:250 #, c-format msgid "Invalid mnemonic '%s'" msgstr "" -#: config/tc-m88k.c:277 +#: config/tc-m88k.c:268 msgid "Parameter syntax error" msgstr "" -#: config/tc-m88k.c:332 +#: config/tc-m88k.c:321 msgid "Unknown relocation type" msgstr "" #. Having this here repeats the warning somtimes. #. But can't we stand that? -#: config/tc-m88k.c:445 +#: config/tc-m88k.c:434 msgid "Use of obsolete instruction" msgstr "" -#: config/tc-m88k.c:562 +#: config/tc-m88k.c:551 msgid "Expression truncated to 16 bits" msgstr "" -#: config/tc-m88k.c:628 config/tc-m88k.c:650 +#: config/tc-m88k.c:617 config/tc-m88k.c:639 msgid "Expression truncated to 5 bits" msgstr "" -#: config/tc-m88k.c:872 +#: config/tc-m88k.c:856 msgid "Expression truncated to 9 bits" msgstr "" -#: config/tc-m88k.c:894 +#: config/tc-m88k.c:878 msgid "Removed lower 2 bits of expression" msgstr "" -#: config/tc-m88k.c:1033 -msgid "Bad relocation type" -msgstr "" - -#: config/tc-m88k.c:1046 +#: config/tc-m88k.c:952 msgid "md_number_to_disp not defined" msgstr "" -#: config/tc-m88k.c:1056 +#: config/tc-m88k.c:962 msgid "md_number_to_field not defined" msgstr "" -#: config/tc-m88k.c:1169 +#: config/tc-m88k.c:1077 msgid "Relaxation should never occur" msgstr "" -#: config/tc-m88k.c:1264 config/tc-sparc.c:3540 read.c:1962 -#, c-format -msgid "BSS length (%d.) <0! Ignored." -msgstr "" - -#: config/tc-m88k.c:1308 -#, c-format -msgid "Ignoring attempt to re-define symbol %s." -msgstr "" - #: config/tc-m88k.h:78 msgid "m88k convert_frag\n" msgstr "" @@ -5109,7 +5315,7 @@ msgstr "" msgid "ignoring operands: %s " msgstr "" -#: config/tc-mcore.c:1767 config/tc-w65.c:836 +#: config/tc-mcore.c:1767 config/tc-w65.c:829 msgid "Bad call to MD_NTOF()" msgstr "" @@ -5136,381 +5342,472 @@ msgstr "" msgid "failed sanity check: long_jump" msgstr "" -#: config/tc-mcore.c:1916 +#: config/tc-mcore.c:1915 #, c-format msgid "odd displacement at %x" msgstr "" -#: config/tc-mcore.c:2104 +#: config/tc-mcore.c:2099 msgid "unknown" msgstr "" -#: config/tc-mcore.c:2135 +#: config/tc-mcore.c:2130 #, c-format msgid "odd distance branch (0x%x bytes)" msgstr "" -#: config/tc-mcore.c:2139 +#: config/tc-mcore.c:2134 #, c-format msgid "pcrel for branch to %s too far (0x%x)" msgstr "" -#: config/tc-mcore.c:2158 +#: config/tc-mcore.c:2153 #, c-format msgid "pcrel for lrw/jmpi/jsri to %s too far (0x%x)" msgstr "" -#: config/tc-mcore.c:2169 +#: config/tc-mcore.c:2164 #, c-format msgid "pcrel for loopt too far (0x%x)" msgstr "" -#: config/tc-mcore.c:2400 +#: config/tc-mcore.c:2394 #, c-format msgid "Can not do %d byte %srelocation" msgstr "" -#: config/tc-mcore.c:2402 +#: config/tc-mcore.c:2396 msgid "pc-relative" msgstr "" -#: config/tc-mcore.c:2419 config/tc-pj.c:569 config/tc-sh.c:3326 -#, c-format -msgid "Cannot represent relocation type %s" -msgstr "" - -#: config/tc-mips.c:642 +#: config/tc-mips.c:659 #, c-format msgid "internal Error, line %d, %s" msgstr "" -#: config/tc-mips.c:644 +#: config/tc-mips.c:661 msgid "MIPS internal Error" msgstr "" -#: config/tc-mips.c:927 +#: config/tc-mips.c:1028 msgid "-G not supported in this configuration." msgstr "" -#: config/tc-mips.c:996 +#: config/tc-mips.c:1056 +msgid "" +"The -mcpu option can't be used together with -march. Use -mtune instead of -" +"mcpu." +msgstr "" + +#: config/tc-mips.c:1064 +msgid "" +"The -mcpu option can't be used together with -mtune. Use -march instead of -" +"mcpu." +msgstr "" + +#: config/tc-mips.c:1113 config/tc-mips.c:1138 +msgid "The -mcpu option is deprecated. Please use -march and -mtune instead." +msgstr "" + +#. This really should be an error instead of a warning, but old +#. compilers only have -mcpu which sets both arch and tune. For +#. now, we discard arch and preserve tune. +#: config/tc-mips.c:1158 +msgid "The -march option is incompatible to -mipsN and therefore ignored." +msgstr "" + +#: config/tc-mips.c:1210 msgid "trap exception not supported at ISA 1" msgstr "" -#: config/tc-mips.c:1053 +#: config/tc-mips.c:1274 #, c-format msgid "internal: can't hash `%s': %s" msgstr "" -#: config/tc-mips.c:1061 +#: config/tc-mips.c:1282 #, c-format msgid "internal error: bad mips16 opcode: %s %s\n" msgstr "" -#: config/tc-mips.c:1229 +#: config/tc-mips.c:1456 #, c-format msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n" msgstr "" -#: config/tc-mips.c:1782 config/tc-mips.c:11374 +#: config/tc-mips.c:2012 config/tc-mips.c:12574 msgid "extended instruction in delay slot" msgstr "" -#: config/tc-mips.c:1804 config/tc-mips.c:1811 +#: config/tc-mips.c:2056 config/tc-mips.c:2067 #, c-format msgid "jump to misaligned address (0x%lx)" msgstr "" -#: config/tc-mips.c:2460 config/tc-mips.c:2814 +#: config/tc-mips.c:2060 config/tc-mips.c:2071 +#, c-format +msgid "jump address range overflow (0x%lx)" +msgstr "" + +#: config/tc-mips.c:2864 config/tc-mips.c:3222 msgid "Macro instruction expanded into multiple instructions" msgstr "" -#: config/tc-mips.c:2867 +#: config/tc-mips.c:3275 msgid "unsupported large constant" msgstr "" -#: config/tc-mips.c:2869 +#: config/tc-mips.c:3277 #, c-format msgid "Instruction %s requires absolute expression" msgstr "" -#: config/tc-mips.c:3015 -msgid "Number larger than 32 bits" +#: config/tc-mips.c:3423 +#, c-format +msgid "Number (0x%lx) larger than 32 bits" msgstr "" -#: config/tc-mips.c:3036 +#: config/tc-mips.c:3445 msgid "Number larger than 64 bits" msgstr "" -#: config/tc-mips.c:3304 config/tc-mips.c:3376 config/tc-mips.c:5055 -#: config/tc-mips.c:5106 config/tc-mips.c:5642 config/tc-mips.c:5705 +#: config/tc-mips.c:3765 config/tc-mips.c:3823 config/tc-mips.c:5671 +#: config/tc-mips.c:5715 config/tc-mips.c:6235 config/tc-mips.c:6293 msgid "PIC code offset overflow (max 16 signed bits)" msgstr "" -#: config/tc-mips.c:3615 +#: config/tc-mips.c:4070 #, c-format msgid "Branch %s is always false (nop)" msgstr "" -#: config/tc-mips.c:3620 +#: config/tc-mips.c:4078 #, c-format msgid "Branch likely %s is always false" msgstr "" -#: config/tc-mips.c:3627 config/tc-mips.c:3701 config/tc-mips.c:3804 -#: config/tc-mips.c:3859 config/tc-mips.c:6742 config/tc-mips.c:6751 -#: config/tc-mips.c:6759 config/tc-mips.c:6868 +#: config/tc-mips.c:4086 config/tc-mips.c:4155 config/tc-mips.c:4250 +#: config/tc-mips.c:4300 config/tc-mips.c:7343 config/tc-mips.c:7351 +#: config/tc-mips.c:7359 config/tc-mips.c:7468 msgid "Unsupported large constant" msgstr "" #. result is always true -#: config/tc-mips.c:3663 +#: config/tc-mips.c:4120 #, c-format msgid "Branch %s is always true" msgstr "" -#: config/tc-mips.c:3935 config/tc-mips.c:4042 +#: config/tc-mips.c:4372 config/tc-mips.c:4484 msgid "Divide by zero." msgstr "" -#: config/tc-mips.c:4626 +#: config/tc-mips.c:5112 msgid "MIPS PIC call to register other than $25" msgstr "" -#: config/tc-mips.c:4631 config/tc-mips.c:4743 +#: config/tc-mips.c:5119 config/tc-mips.c:5130 config/tc-mips.c:5232 +#: config/tc-mips.c:5243 msgid "No .cprestore pseudo-op used in PIC code" msgstr "" -#: config/tc-mips.c:4816 config/tc-mips.c:4905 config/tc-mips.c:5393 -#: config/tc-mips.c:5434 config/tc-mips.c:5452 config/tc-mips.c:6081 +#: config/tc-mips.c:5124 config/tc-mips.c:5237 +msgid "No .frame pseudo-op used in PIC code" +msgstr "" + +#: config/tc-mips.c:5315 config/tc-mips.c:5404 config/tc-mips.c:5986 +#: config/tc-mips.c:6027 config/tc-mips.c:6045 config/tc-mips.c:6676 msgid "opcode not supported on this processor" msgstr "" -#: config/tc-mips.c:5912 config/tc-mips.c:6636 +#: config/tc-mips.c:6490 config/tc-mips.c:7234 msgid "Macro used $at after \".set noat\"" msgstr "" -#: config/tc-mips.c:6052 config/tc-mips.c:6070 +#: config/tc-mips.c:6642 config/tc-mips.c:6664 msgid "rotate count too large" msgstr "" -#: config/tc-mips.c:6121 +#: config/tc-mips.c:6716 #, c-format msgid "Instruction %s: result is always false" msgstr "" -#: config/tc-mips.c:6290 +#: config/tc-mips.c:6889 #, c-format msgid "Instruction %s: result is always true" msgstr "" -#: config/tc-mips.c:6429 config/tc-mips.c:6456 config/tc-mips.c:6528 -#: config/tc-mips.c:6553 +#: config/tc-mips.c:7028 config/tc-mips.c:7057 config/tc-mips.c:7127 +#: config/tc-mips.c:7153 msgid "operand overflow" msgstr "" #. FIXME: Check if this is one of the itbl macros, since they #. are added dynamically. -#: config/tc-mips.c:6632 +#: config/tc-mips.c:7230 #, c-format msgid "Macro %s not implemented yet" msgstr "" -#: config/tc-mips.c:6902 +#: config/tc-mips.c:7501 #, c-format msgid "internal: bad mips opcode (mask error): %s %s" msgstr "" -#: config/tc-mips.c:6958 +#: config/tc-mips.c:7557 #, c-format msgid "internal: bad mips opcode (unknown operand type `%c'): %s %s" msgstr "" -#: config/tc-mips.c:6965 +#: config/tc-mips.c:7564 #, c-format msgid "internal: bad mips opcode (bits 0x%lx undefined): %s %s" msgstr "" -#: config/tc-mips.c:7073 +#: config/tc-mips.c:7676 #, c-format msgid "opcode not supported on this processor: %s (%s)" msgstr "" -#: config/tc-mips.c:7144 +#: config/tc-mips.c:7753 #, c-format msgid "Improper shift amount (%ld)" msgstr "" -#: config/tc-mips.c:7170 config/tc-mips.c:8324 config/tc-mips.c:8439 +#: config/tc-mips.c:7779 config/tc-mips.c:8992 config/tc-mips.c:9107 #, c-format msgid "Invalid value for `%s' (%lu)" msgstr "" -#: config/tc-mips.c:7188 +#: config/tc-mips.c:7797 #, c-format msgid "Illegal break code (%ld)" msgstr "" -#: config/tc-mips.c:7202 +#: config/tc-mips.c:7811 #, c-format msgid "Illegal lower break code (%ld)" msgstr "" -#: config/tc-mips.c:7215 +#: config/tc-mips.c:7824 #, c-format msgid "Illegal 20-bit code (%ld)" msgstr "" -#: config/tc-mips.c:7227 +#: config/tc-mips.c:7836 #, c-format msgid "Coproccesor code > 25 bits (%ld)" msgstr "" -#: config/tc-mips.c:7240 +#: config/tc-mips.c:7849 #, c-format msgid "Illegal 19-bit code (%ld)" msgstr "" -#: config/tc-mips.c:7252 +#: config/tc-mips.c:7861 #, c-format -msgid "Invalidate performance regster (%ld)" +msgid "Invalid performance register (%ld)" msgstr "" -#: config/tc-mips.c:7289 +#: config/tc-mips.c:7898 #, c-format msgid "Invalid register number (%d)" msgstr "" -#: config/tc-mips.c:7453 +#: config/tc-mips.c:8063 #, c-format msgid "Invalid float register number (%d)" msgstr "" -#: config/tc-mips.c:7463 +#: config/tc-mips.c:8073 #, c-format msgid "Float register should be even, was %d" msgstr "" -#: config/tc-mips.c:7514 +#: config/tc-mips.c:8124 msgid "absolute expression required" msgstr "" -#: config/tc-mips.c:7575 +#: config/tc-mips.c:8192 #, c-format msgid "Bad floating point constant: %s" msgstr "" -#: config/tc-mips.c:7697 +#: config/tc-mips.c:8320 msgid "Can't use floating point insn in this section" msgstr "" -#: config/tc-mips.c:7751 +#: config/tc-mips.c:8361 config/tc-mips.c:8366 config/tc-mips.c:8497 +#: config/tc-mips.c:8502 +msgid "bad composition of relocations" +msgstr "" + +#: config/tc-mips.c:8399 msgid "16 bit expression not in range 0..65535" msgstr "" -#: config/tc-mips.c:7788 +#: config/tc-mips.c:8436 msgid "16 bit expression not in range -32768..32767" msgstr "" -#: config/tc-mips.c:7859 +#: config/tc-mips.c:8521 msgid "lui expression not in range 0..65535" msgstr "" -#: config/tc-mips.c:7883 +#: config/tc-mips.c:8545 #, c-format msgid "invalid condition code register $fcc%d" msgstr "" -#: config/tc-mips.c:7908 +#: config/tc-mips.c:8570 msgid "invalid coprocessor sub-selection value (0-7)" msgstr "" -#: config/tc-mips.c:7913 +#: config/tc-mips.c:8575 #, c-format msgid "bad char = '%c'\n" msgstr "" -#: config/tc-mips.c:7926 config/tc-mips.c:8464 +#: config/tc-mips.c:8586 config/tc-mips.c:8591 config/tc-mips.c:9132 msgid "illegal operands" msgstr "" -#: config/tc-mips.c:7993 +#: config/tc-mips.c:8658 msgid "unrecognized opcode" msgstr "" -#: config/tc-mips.c:8102 +#: config/tc-mips.c:8770 #, c-format msgid "invalid register number (%d)" msgstr "" -#: config/tc-mips.c:8183 +#: config/tc-mips.c:8851 msgid "used $at without \".set noat\"" msgstr "" -#: config/tc-mips.c:8358 +#: config/tc-mips.c:9026 msgid "can't parse register list" msgstr "" -#: config/tc-mips.c:8392 config/tc-mips.c:8422 -msgid "invalid register list" -msgstr "" - -#: config/tc-mips.c:8590 +#: config/tc-mips.c:9258 msgid "extended operand requested but not required" msgstr "" -#: config/tc-mips.c:8592 +#: config/tc-mips.c:9260 msgid "invalid unextended operand value" msgstr "" -#: config/tc-mips.c:8620 +#: config/tc-mips.c:9288 msgid "operand value out of range for instruction" msgstr "" -#: config/tc-mips.c:9005 +#: config/tc-mips.c:9520 +msgid "internal error" +msgstr "" + +#: config/tc-mips.c:9840 +#, c-format +msgid "invalid architecture -mtune=%s" +msgstr "" + +#: config/tc-mips.c:9843 +#, c-format +msgid "invalid architecture -march=%s" +msgstr "" + +#: config/tc-mips.c:9846 #, c-format msgid "invalid architecture -mcpu=%s" msgstr "" -#: config/tc-mips.c:9054 +#: config/tc-mips.c:9858 +#, c-format +msgid "A different -mtune= was already specified, is now -mtune=%s" +msgstr "" + +#: config/tc-mips.c:9864 +#, c-format +msgid "A different -march= was already specified, is now -march=%s" +msgstr "" + +#: config/tc-mips.c:9870 +#, c-format +msgid "A different -mcpu= was already specified, is now -mcpu=%s" +msgstr "" + +#: config/tc-mips.c:9880 +msgid "A different -march= or -mtune= was already specified, is now -m4650" +msgstr "" + +#: config/tc-mips.c:9892 +msgid "A different -march= or -mtune= was already specified, is now -m4010" +msgstr "" + +#: config/tc-mips.c:9904 +msgid "A different -march= or -mtune= was already specified, is now -m4100" +msgstr "" + +#: config/tc-mips.c:9916 +msgid "A different -march= or -mtune= was already specified, is now -m3900" +msgstr "" + +#: config/tc-mips.c:9939 msgid "-G may not be used with embedded PIC code" msgstr "" -#: config/tc-mips.c:9066 +#: config/tc-mips.c:9952 msgid "-call_shared is supported only for ELF format" msgstr "" -#: config/tc-mips.c:9072 config/tc-mips.c:10158 config/tc-mips.c:10332 +#: config/tc-mips.c:9958 config/tc-mips.c:11148 config/tc-mips.c:11350 msgid "-G may not be used with SVR4 PIC code" msgstr "" -#: config/tc-mips.c:9081 +#: config/tc-mips.c:9967 msgid "-non_shared is supported only for ELF format" msgstr "" -#: config/tc-mips.c:9097 +#: config/tc-mips.c:9984 msgid "-G is not supported for this configuration" msgstr "" -#: config/tc-mips.c:9102 +#: config/tc-mips.c:9989 msgid "-G may not be used with SVR4 or embedded PIC code" msgstr "" -#: config/tc-mips.c:9126 +#: config/tc-mips.c:10003 +msgid "-32 is supported for ELF format only" +msgstr "" + +#: config/tc-mips.c:10012 +msgid "-n32 is supported for ELF format only" +msgstr "" + +#: config/tc-mips.c:10021 +msgid "-64 is supported for ELF format only" +msgstr "" + +#: config/tc-mips.c:10026 config/tc-mips.c:10065 msgid "No compiled in support for 64 bit object file format" msgstr "" -#: config/tc-mips.c:9218 +#: config/tc-mips.c:10052 +msgid "-mabi is supported for ELF format only" +msgstr "" + +#: config/tc-mips.c:10126 msgid "" "MIPS options:\n" "-membedded-pic\t\tgenerate embedded position independent code\n" "-EB\t\t\tgenerate big endian output\n" "-EL\t\t\tgenerate little endian output\n" -"-g, -g2\t\t\tdo not remove uneeded NOPs or swap branches\n" +"-g, -g2\t\t\tdo not remove unneeded NOPs or swap branches\n" "-G NUM\t\t\tallow referencing objects up to NUM bytes\n" "\t\t\timplicitly with the gp register [default 8]\n" msgstr "" -#: config/tc-mips.c:9226 +#: config/tc-mips.c:10134 msgid "" "-mips1\t\t\tgenerate MIPS ISA I instructions\n" "-mips2\t\t\tgenerate MIPS ISA II instructions\n" @@ -5519,245 +5816,508 @@ msgid "" "-mips5 generate MIPS ISA V instructions\n" "-mips32 generate MIPS32 ISA instructions\n" "-mips64 generate MIPS64 ISA instructions\n" -"-mcpu=CPU\t\tgenerate code for CPU, where CPU is one of:\n" +"-march=CPU/-mtune=CPU\tgenerate code/schedule for CPU, where CPU is one of:\n" msgstr "" -#: config/tc-mips.c:9257 +#: config/tc-mips.c:10170 msgid "" -"-mCPU\t\t\tequivalent to -mcpu=CPU.\n" +"-mCPU\t\t\tequivalent to -march=CPU -mtune=CPU. Deprecated.\n" "-no-mCPU\t\tdon't generate code specific to CPU.\n" "\t\t\tFor -mCPU and -no-mCPU, CPU must be one of:\n" msgstr "" -#: config/tc-mips.c:9270 +#: config/tc-mips.c:10183 msgid "" "-mips16\t\t\tgenerate mips16 instructions\n" "-no-mips16\t\tdo not generate mips16 instructions\n" msgstr "" -#: config/tc-mips.c:9273 +#: config/tc-mips.c:10186 msgid "" +"-mgp32\t\t\tuse 32-bit GPRs, regardless of the chosen ISA\n" +"-mfp32\t\t\tuse 32-bit FPRs, regardless of the chosen ISA\n" "-O0\t\t\tremove unneeded NOPs, do not swap branches\n" "-O\t\t\tremove unneeded NOPs and swap branches\n" +"-n\t\t\twarn about NOPs generated from macros\n" "--[no-]construct-floats [dis]allow floating point values to be constructed\n" "--trap, --no-break\ttrap exception on div by 0 and mult overflow\n" "--break, --no-trap\tbreak exception on div by 0 and mult overflow\n" msgstr "" -#: config/tc-mips.c:9280 +#: config/tc-mips.c:10196 msgid "" "-KPIC, -call_shared\tgenerate SVR4 position independent code\n" "-non_shared\t\tdo not generate position independent code\n" "-xgot\t\t\tassume a 32 bit GOT\n" -"-32\t\t\tcreate 32 bit object file (default)\n" -"-64\t\t\tcreate 64 bit object file\n" +"-mabi=ABI\t\tcreate ABI conformant object file for:\n" msgstr "" -#: config/tc-mips.c:9337 -#, c-format -msgid "Unsupported reloc size %d" +#: config/tc-mips.c:10212 +msgid "" +"-32\t\t\tcreate o32 ABI object file (default)\n" +"-n32\t\t\tcreate n32 ABI object file\n" +"-64\t\t\tcreate 64 ABI object file\n" msgstr "" -#: config/tc-mips.c:9440 +#: config/tc-mips.c:10342 +#, c-format msgid "Unmatched %%hi reloc" msgstr "" -#: config/tc-mips.c:9563 +#: config/tc-mips.c:10554 msgid "Invalid PC relative reloc" msgstr "" -#: config/tc-mips.c:9673 config/tc-sparc.c:3101 config/tc-sparc.c:3108 -#: config/tc-sparc.c:3115 config/tc-sparc.c:3122 config/tc-sparc.c:3129 -#: config/tc-sparc.c:3138 config/tc-sparc.c:3149 config/tc-sparc.c:3175 -#: config/tc-sparc.c:3203 write.c:992 write.c:1056 +#: config/tc-mips.c:10662 config/tc-sparc.c:3106 config/tc-sparc.c:3113 +#: config/tc-sparc.c:3120 config/tc-sparc.c:3127 config/tc-sparc.c:3134 +#: config/tc-sparc.c:3143 config/tc-sparc.c:3154 config/tc-sparc.c:3176 +#: config/tc-sparc.c:3200 write.c:1026 write.c:1089 msgid "relocation overflow" msgstr "" -#: config/tc-mips.c:9689 +#: config/tc-mips.c:10673 #, c-format msgid "Branch to odd address (%lx)" msgstr "" -#: config/tc-mips.c:9853 +#: config/tc-mips.c:10735 +msgid "Branch out of range" +msgstr "" + +#: config/tc-mips.c:10843 #, c-format msgid "%08lx UNDEFINED\n" msgstr "" -#: config/tc-mips.c:9919 +#: config/tc-mips.c:10906 +#, c-format +msgid "Alignment too large: %d. assumed." +msgstr "" + +#: config/tc-mips.c:10909 msgid "Alignment negative: 0 assumed." msgstr "" -#: config/tc-mips.c:10007 +#: config/tc-mips.c:10997 msgid "No read only data section in this object file format" msgstr "" -#: config/tc-mips.c:10030 +#: config/tc-mips.c:11020 msgid "Global pointers not supported; recompile -G 0" msgstr "" -#: config/tc-mips.c:10116 +#: config/tc-mips.c:11106 #, c-format msgid "%s: no such section" msgstr "" -#: config/tc-mips.c:10153 +#: config/tc-mips.c:11143 #, c-format msgid ".option pic%d not supported" msgstr "" -#: config/tc-mips.c:10164 +#: config/tc-mips.c:11154 #, c-format msgid "Unrecognized option \"%s\"" msgstr "" -#: config/tc-mips.c:10227 +#: config/tc-mips.c:11217 msgid "`noreorder' must be set before `nomacro'" msgstr "" -#: config/tc-mips.c:10269 -msgid "unknown ISA level" +#: config/tc-mips.c:11273 config/tc-mips.c:11287 +#, c-format +msgid "unknown ISA level %s" msgstr "" -#: config/tc-mips.c:10291 +#: config/tc-mips.c:11309 msgid ".set pop with no .set push" msgstr "" -#: config/tc-mips.c:10315 +#: config/tc-mips.c:11333 #, c-format msgid "Tried to set unrecognized symbol: %s\n" msgstr "" -#: config/tc-mips.c:10365 +#: config/tc-mips.c:11384 msgid ".cpload not in noreorder section" msgstr "" -#: config/tc-mips.c:10447 +#: config/tc-mips.c:11441 config/tc-mips.c:11454 +msgid "missing argument separator ',' for .cpsetup" +msgstr "" + +#: config/tc-mips.c:11638 msgid "Unsupported use of .gpword" msgstr "" -#: config/tc-mips.c:10584 +#: config/tc-mips.c:11774 msgid "expected `$'" msgstr "" -#: config/tc-mips.c:10592 +#: config/tc-mips.c:11782 msgid "Bad register number" msgstr "" -#: config/tc-mips.c:10608 +#: config/tc-mips.c:11798 msgid "Unrecognized register name" msgstr "" -#: config/tc-mips.c:10807 +#: config/tc-mips.c:11983 msgid "unsupported PC relative reference to different section" msgstr "" -#: config/tc-mips.c:10916 +#: config/tc-mips.c:12096 msgid "unsupported relocation" msgstr "" -#: config/tc-mips.c:11020 +#: config/tc-mips.c:12200 msgid "AT used after \".set noat\" or macro used after \".set nomacro\"" msgstr "" -#: config/tc-mips.c:11083 +#: config/tc-mips.c:12269 msgid "Double check fx_r_type in tc-mips.c:tc_gen_reloc" msgstr "" -#: config/tc-mips.c:11596 -msgid "missing `.end' at end of assembly" +#: config/tc-mips.c:12461 config/tc-sh.c:3218 +#, c-format +msgid "Can not represent %s relocation in this object file format" +msgstr "" + +#: config/tc-mips.c:12800 +msgid "missing .end at end of assembly" msgstr "" -#: config/tc-mips.c:11611 -msgid "Expected simple number." +#: config/tc-mips.c:12815 +msgid "expected simple number" msgstr "" -#: config/tc-mips.c:11637 +#: config/tc-mips.c:12841 #, c-format msgid " *input_line_pointer == '%c' 0x%02x\n" msgstr "" -#: config/tc-mips.c:11639 -msgid "Invalid number" +#: config/tc-mips.c:12843 +msgid "invalid number" msgstr "" -#: config/tc-mips.c:11693 +#: config/tc-mips.c:12901 msgid ".end not in text section" msgstr "" -#: config/tc-mips.c:11697 +#: config/tc-mips.c:12905 msgid ".end directive without a preceding .ent directive." msgstr "" -#: config/tc-mips.c:11706 +#: config/tc-mips.c:12914 msgid ".end symbol does not match .ent symbol." msgstr "" -#: config/tc-mips.c:11709 +#: config/tc-mips.c:12917 msgid ".end directive missing or unknown symbol" msgstr "" -#: config/tc-mips.c:11784 +#: config/tc-mips.c:12990 msgid ".ent or .aent not in text section." msgstr "" -#: config/tc-mips.c:11787 -msgid "missing `.end'" +#: config/tc-mips.c:12993 +msgid "missing .end" msgstr "" -#: config/tc-mips.c:11820 ecoff.c:3205 +#: config/tc-mips.c:13030 ecoff.c:3202 msgid ".frame outside of .ent" msgstr "" -#: config/tc-mips.c:11831 ecoff.c:3216 +#: config/tc-mips.c:13041 msgid "Bad .frame directive" msgstr "" -#: config/tc-mips.c:11861 +#: config/tc-mips.c:13071 msgid ".mask/.fmask outside of .ent" msgstr "" -#: config/tc-mips.c:11868 +#: config/tc-mips.c:13078 msgid "Bad .mask/.fmask directive" msgstr "" -#: config/tc-mn10200.c:333 +#: config/tc-mmix.c:669 +msgid " MMIX-specific command line options:\n" +msgstr "" + +#: config/tc-mmix.c:670 +msgid "" +" -fixed-special-register-names\n" +" Allow only the original special register names.\n" +msgstr "" + +#: config/tc-mmix.c:673 +msgid " -globalize-symbols Make all symbols global.\n" +msgstr "" + +#: config/tc-mmix.c:675 +msgid " -gnu-syntax Turn off mmixal syntax compatibility.\n" +msgstr "" + +#: config/tc-mmix.c:677 +msgid " -relax Create linker relaxable code.\n" +msgstr "" + +#: config/tc-mmix.c:679 +msgid "" +" -no-predefined-syms Do not provide mmixal built-in constants.\n" +" Implies -fixed-special-register-names.\n" +msgstr "" + +#: config/tc-mmix.c:682 +msgid "" +" -no-expand Do not expand GETA, branches, PUSHJ or JUMP\n" +" into multiple instructions.\n" +msgstr "" + +#: config/tc-mmix.c:685 +msgid "" +" -no-merge-gregs Do not merge GREG definitions with nearby values.\n" +msgstr "" + +#: config/tc-mmix.c:687 +msgid "" +" -x Do not warn when an operand to GETA, a branch,\n" +" PUSHJ or JUMP is not known to be within range.\n" +" The linker will catch any errors.\n" +msgstr "" + +#: config/tc-mmix.c:813 +#, c-format +msgid "unknown opcode: `%s'" +msgstr "" + +#: config/tc-mmix.c:935 config/tc-mmix.c:950 +msgid "specified location wasn't TETRA-aligned" +msgstr "" + +#: config/tc-mmix.c:937 config/tc-mmix.c:952 config/tc-mmix.c:4055 +#: config/tc-mmix.c:4071 +msgid "unaligned data at an absolute location is not supported" +msgstr "" + +#: config/tc-mmix.c:1062 +#, c-format +msgid "invalid operand to opcode %s: `%s'" +msgstr "" + +#: config/tc-mmix.c:1084 config/tc-mmix.c:1111 config/tc-mmix.c:1144 +#: config/tc-mmix.c:1152 config/tc-mmix.c:1169 config/tc-mmix.c:1197 +#: config/tc-mmix.c:1218 config/tc-mmix.c:1243 config/tc-mmix.c:1291 +#: config/tc-mmix.c:1389 config/tc-mmix.c:1414 config/tc-mmix.c:1446 +#: config/tc-mmix.c:1478 config/tc-mmix.c:1508 config/tc-mmix.c:1561 +#: config/tc-mmix.c:1578 config/tc-mmix.c:1605 config/tc-mmix.c:1633 +#: config/tc-mmix.c:1660 config/tc-mmix.c:1686 config/tc-mmix.c:1702 +#: config/tc-mmix.c:1728 config/tc-mmix.c:1744 config/tc-mmix.c:1760 +#: config/tc-mmix.c:1823 config/tc-mmix.c:1839 +#, c-format +msgid "invalid operands to opcode %s: `%s'" +msgstr "" + +#: config/tc-mmix.c:1816 +#, c-format +msgid "unsupported operands to %s: `%s'" +msgstr "" + +#: config/tc-mmix.c:1944 +msgid "internal: mmix_prefix_name but empty prefix" +msgstr "" + +#: config/tc-mmix.c:1989 +#, c-format +msgid "too many GREG registers allocated (max %d)" +msgstr "" + +#: config/tc-mmix.c:2049 +msgid "BSPEC already active. Nesting is not supported." +msgstr "" + +#: config/tc-mmix.c:2058 +msgid "invalid BSPEC expression" +msgstr "" + +#: config/tc-mmix.c:2074 +#, c-format +msgid "can't create section %s" +msgstr "" + +#: config/tc-mmix.c:2079 +#, c-format +msgid "can't set section flags for section %s" +msgstr "" + +#: config/tc-mmix.c:2101 +msgid "ESPEC without preceding BSPEC" +msgstr "" + +#: config/tc-mmix.c:2131 +msgid "missing local expression" +msgstr "" + +#: config/tc-mmix.c:2346 +msgid "operand out of range, instruction expanded" +msgstr "" + +#. The BFD_RELOC_MMIX_LOCAL-specific message is supposed to be +#. user-friendly, though a little bit non-substantial. +#: config/tc-mmix.c:2598 +msgid "directive LOCAL must be placed in code or data" +msgstr "" + +#: config/tc-mmix.c:2599 +msgid "internal confusion: relocation in a section without contents" +msgstr "" + +#: config/tc-mmix.c:2714 +msgid "internal: BFD_RELOC_MMIX_BASE_PLUS_OFFSET not resolved to section" +msgstr "" + +#: config/tc-mmix.c:2754 +msgid "no suitable GREG definition for operands" +msgstr "" + +#: config/tc-mmix.c:2813 +msgid "operands were not reducible at assembly-time" +msgstr "" + +#: config/tc-mmix.c:2841 +#, c-format +msgid "cannot generate relocation type for symbol %s, code %s" +msgstr "" + +#: config/tc-mmix.c:2861 +#, c-format +msgid "internal: unhandled label %s" +msgstr "" + +#: config/tc-mmix.c:2915 +msgid "[0-9]H labels may not appear alone on a line" +msgstr "" + +#: config/tc-mmix.c:2924 +msgid "[0-9]H labels do not mix with dot-pseudos" +msgstr "" + +#: config/tc-mmix.c:2988 +msgid "invalid characters in input" +msgstr "" + +#: config/tc-mmix.c:3092 +msgid "empty label field for IS" +msgstr "" + +#: config/tc-mmix.c:3342 +#, c-format +msgid "internal: unexpected relax type %d:%d" +msgstr "" + +#: config/tc-mmix.c:3364 +msgid "BSPEC without ESPEC." +msgstr "" + +#: config/tc-mmix.c:3566 +msgid "GREG expression too complicated" +msgstr "" + +#: config/tc-mmix.c:3579 +msgid "internal: GREG expression not resolved to section" +msgstr "" + +#: config/tc-mmix.c:3630 +msgid "register section has contents\n" +msgstr "" + +#: config/tc-mmix.c:3808 +msgid "section change from within a BSPEC/ESPEC pair is not supported" +msgstr "" + +#: config/tc-mmix.c:3830 +msgid "directive LOC from within a BSPEC/ESPEC pair is not supported" +msgstr "" + +#: config/tc-mmix.c:3841 +msgid "invalid LOC expression" +msgstr "" + +#: config/tc-mmix.c:3866 config/tc-mmix.c:3892 +msgid "LOC expression stepping backwards is not supported" +msgstr "" + +#. We will only get here in rare cases involving #NO_APP, +#. where the unterminated string is not recognized by the +#. preformatting pass. +#: config/tc-mmix.c:3976 config/tc-mmix.c:4137 +msgid "unterminated string" +msgstr "" + +#: config/tc-mmix.c:3993 +msgid "BYTE expression not a pure number" +msgstr "" + +#. Note that mmixal does not allow negative numbers in +#. BYTE sequences, so neither should we. +#: config/tc-mmix.c:4002 +msgid "BYTE expression not in the range 0..255" +msgstr "" + +#: config/tc-mmix.c:4053 config/tc-mmix.c:4069 +msgid "data item with alignment larger than location" +msgstr "" + +#. Since integer_constant is local to expr.c, we have to make this a +#. macro. FIXME: Do it cleaner. +#: config/tc-mmix.h:103 +msgid "`&' serial number operator is not supported" +msgstr "" + +#: config/tc-mn10200.c:319 msgid "" "MN10200 options:\n" "none yet\n" msgstr "" -#: config/tc-mn10200.c:807 config/tc-mn10300.c:953 config/tc-ppc.c:1736 -#: config/tc-v850.c:1728 +#: config/tc-mn10200.c:793 config/tc-mn10300.c:929 config/tc-ppc.c:1867 +#: config/tc-s390.c:1290 config/tc-v850.c:1725 #, c-format msgid "Unrecognized opcode: `%s'" msgstr "" -#: config/tc-mn10200.c:1050 config/tc-mn10300.c:1476 config/tc-ppc.c:2097 -#: config/tc-v850.c:2152 +#: config/tc-mn10200.c:1036 config/tc-mn10300.c:1452 config/tc-ppc.c:2305 +#: config/tc-s390.c:1216 config/tc-v850.c:2149 #, c-format msgid "junk at end of line: `%s'" msgstr "" -#: config/tc-mn10200.c:1374 config/tc-mn10300.c:2045 config/tc-ppc.c:1224 -#: config/tc-v850.c:1656 +#: config/tc-mn10200.c:1349 config/tc-mn10300.c:2076 config/tc-ppc.c:1299 +#: config/tc-v850.c:1654 #, c-format msgid "operand out of range (%s not between %ld and %ld)" msgstr "" -#: config/tc-mn10300.c:542 +#: config/tc-mn10300.c:518 msgid "" "MN10300 options:\n" "none yet\n" msgstr "" -#: config/tc-mn10300.c:970 +#: config/tc-mn10300.c:946 msgid "Invalid opcode/operands" msgstr "" -#: config/tc-mn10300.c:1447 +#: config/tc-mn10300.c:1423 msgid "Invalid register specification." msgstr "" +#: config/tc-mn10300.c:1976 +#, c-format +msgid "Bad relocation fixup type (%d)" +msgstr "" + #: config/tc-ns32k.c:446 msgid "Invalid syntax in PC-relative addressing mode" msgstr "" @@ -5910,51 +6470,47 @@ msgstr "" msgid "Bit field out of range" msgstr "" -#: config/tc-ns32k.c:2176 +#: config/tc-ns32k.c:2157 #, c-format msgid "invalid architecture option -m%s" msgstr "" -#: config/tc-ns32k.c:2192 +#: config/tc-ns32k.c:2173 msgid "" "NS32K options:\n" "-m32032 | -m32532\tselect variant of NS32K architecture\n" msgstr "" -#: config/tc-ns32k.c:2370 +#: config/tc-ns32k.c:2351 #, c-format msgid "Cannot find relocation type for symbol %s, code %d" msgstr "" -#: config/tc-pj.c:66 config/tc-pj.c:74 +#: config/tc-pj.c:67 config/tc-pj.c:75 msgid "confusing relocation expressions" msgstr "" -#: config/tc-pj.c:165 +#: config/tc-pj.c:166 msgid "can't have relocation for ipush" msgstr "" -#: config/tc-pj.c:272 +#: config/tc-pj.c:273 #, c-format msgid "unknown opcode %s" msgstr "" -#: config/tc-pj.c:421 +#: config/tc-pj.c:422 msgid "" "PJ options:\n" "-little\t\t\tgenerate little endian code\n" "-big\t\t\tgenerate big endian code\n" msgstr "" -#: config/tc-pj.c:458 config/tc-sh.c:2899 config/tc-sh.c:2906 -#: config/tc-sh.c:2913 config/tc-sh.c:2920 +#: config/tc-pj.c:460 config/tc-sh.c:2922 config/tc-sh.c:2929 +#: config/tc-sh.c:2936 config/tc-sh.c:2943 msgid "pcrel too far" msgstr "" -#: config/tc-pj.c:526 config/tc-sh.c:3011 -msgid "offset out of range" -msgstr "" - #: config/tc-pj.h:38 msgid "convert_frag\n" msgstr "" @@ -5963,29 +6519,35 @@ msgstr "" msgid "estimate size\n" msgstr "" -#: config/tc-ppc.c:926 +#: config/tc-ppc.c:990 config/tc-s390.c:378 #, c-format msgid "invalid switch -m%s" msgstr "" -#: config/tc-ppc.c:963 +#: config/tc-ppc.c:1027 msgid "" "PowerPC options:\n" "-u\t\t\tignored\n" "-mpwrx, -mpwr2\t\tgenerate code for IBM POWER/2 (RIOS2)\n" "-mpwr\t\t\tgenerate code for IBM POWER (RIOS1)\n" "-m601\t\t\tgenerate code for Motorola PowerPC 601\n" -"-mppc, -mppc32, -m403, -m405, -m603, -m604\n" +"-mppc, -mppc32, -m603, -m604\n" "\t\t\tgenerate code for Motorola PowerPC 603/604\n" +"-m403, -m405 generate code for Motorola PowerPC 403/405\n" +"-m7400, -m7410, -m7450, -m7455\n" +"\t\t\tgenerate code For Motorola PowerPC 7400/7410/7450/7455\n" "-mppc64, -m620\t\tgenerate code for Motorola PowerPC 620\n" "-mppc64bridge\t\tgenerate code for PowerPC 64, including bridge insns\n" +"-mbooke64\t\tgenerate code for 64-bit PowerPC BookE\n" +"-mbooke, mbooke32\tgenerate code for 32-bit PowerPC BookE\n" +"-maltivec\t\tgenerate code for AltiVec\n" "-mcom\t\t\tgenerate code Power/PowerPC common instructions\n" "-many\t\t\tgenerate code for any architecture (PWR/PWRX/PPC)\n" "-mregnames\t\tAllow symbolic names for registers\n" "-mno-regnames\t\tDo not allow symbolic names for registers\n" msgstr "" -#: config/tc-ppc.c:978 +#: config/tc-ppc.c:1048 msgid "" "-mrelocatable\t\tsupport for GCC's -mrelocatble option\n" "-mrelocatable-lib\tsupport for GCC's -mrelocatble-lib option\n" @@ -5999,406 +6561,515 @@ msgid "" "-Qy, -Qn\t\tignored\n" msgstr "" -#: config/tc-ppc.c:1013 +#: config/tc-ppc.c:1082 #, c-format msgid "Unknown default cpu = %s, os = %s" msgstr "" -#: config/tc-ppc.c:1038 +#: config/tc-ppc.c:1107 msgid "Neither Power nor PowerPC opcodes were selected." msgstr "" -#: config/tc-ppc.c:1117 +#: config/tc-ppc.c:1190 config/tc-s390.c:471 #, c-format msgid "Internal assembler error for instruction %s" msgstr "" -#: config/tc-ppc.c:1136 +#: config/tc-ppc.c:1210 #, c-format msgid "Internal assembler error for macro %s" msgstr "" -#: config/tc-ppc.c:1346 +#: config/tc-ppc.c:1437 msgid "identifier+constant@got means identifier@got+constant" msgstr "" -#: config/tc-ppc.c:1400 config/tc-sh.c:341 config/tc-sh.c:369 +#: config/tc-ppc.c:1505 config/tc-sh.c:388 config/tc-sh.c:416 #, c-format msgid "%s relocations do not fit in %d bytes\n" msgstr "" -#: config/tc-ppc.c:1500 +#: config/tc-ppc.c:1612 #, c-format msgid "Length of .lcomm \"%s\" is already %ld. Not changed to %ld." msgstr "" -#: config/tc-ppc.c:1582 +#: config/tc-ppc.c:1694 msgid "Relocation cannot be done when using -mrelocatable" msgstr "" -#: config/tc-ppc.c:1663 +#: config/tc-ppc.c:1794 #, c-format msgid "syntax error: invalid toc specifier `%s'" msgstr "" -#: config/tc-ppc.c:1677 +#: config/tc-ppc.c:1808 #, c-format msgid "syntax error: expected `]', found `%c'" msgstr "" -#: config/tc-ppc.c:1912 +#: config/tc-ppc.c:2044 msgid "[tocv] symbol is not a toc symbol" msgstr "" -#: config/tc-ppc.c:1923 +#: config/tc-ppc.c:2055 msgid "Unimplemented toc32 expression modifier" msgstr "" -#: config/tc-ppc.c:1928 +#: config/tc-ppc.c:2060 msgid "Unimplemented toc64 expression modifier" msgstr "" -#: config/tc-ppc.c:1932 +#: config/tc-ppc.c:2064 #, c-format msgid "Unexpected return value [%d] from parse_toc_entry!\n" msgstr "" -#: config/tc-ppc.c:2085 +#: config/tc-ppc.c:2249 +msgid "unsupported relocation for DS offset field" +msgstr "" + +#: config/tc-ppc.c:2293 #, c-format msgid "syntax error; found `%c' but expected `%c'" msgstr "" -#: config/tc-ppc.c:2197 +#: config/tc-ppc.c:2419 msgid "wrong number of operands" msgstr "" -#: config/tc-ppc.c:2253 -msgid "Bad .section directive: want a,w,x,e in string" +#: config/tc-ppc.c:2475 +msgid "Bad .section directive: want a,e,w,x,M,S in string" msgstr "" -#: config/tc-ppc.c:2367 +#: config/tc-ppc.c:2590 msgid "missing size" msgstr "" -#: config/tc-ppc.c:2376 +#: config/tc-ppc.c:2599 msgid "negative size" msgstr "" -#: config/tc-ppc.c:2417 +#: config/tc-ppc.c:2636 msgid "missing real symbol name" msgstr "" -#: config/tc-ppc.c:2438 +#: config/tc-ppc.c:2657 msgid "attempt to redefine symbol" msgstr "" -#: config/tc-ppc.c:2672 +#: config/tc-ppc.c:2891 msgid "The XCOFF file format does not support arbitrary sections" msgstr "" -#: config/tc-ppc.c:2749 +#: config/tc-ppc.c:2968 msgid "missing rename string" msgstr "" -#: config/tc-ppc.c:2780 config/tc-ppc.c:3305 read.c:2992 +#: config/tc-ppc.c:2999 config/tc-ppc.c:3554 read.c:3053 msgid "missing value" msgstr "" -#: config/tc-ppc.c:2798 +#: config/tc-ppc.c:3017 msgid "illegal .stabx expression; zero assumed" msgstr "" -#: config/tc-ppc.c:2830 +#: config/tc-ppc.c:3049 msgid "missing class" msgstr "" -#: config/tc-ppc.c:2839 +#: config/tc-ppc.c:3058 msgid "missing type" msgstr "" -#: config/tc-ppc.c:2900 +#: config/tc-ppc.c:3139 msgid "missing symbol name" msgstr "" -#: config/tc-ppc.c:3076 +#: config/tc-ppc.c:3333 msgid "nested .bs blocks" msgstr "" -#: config/tc-ppc.c:3109 +#: config/tc-ppc.c:3366 msgid ".es without preceding .bs" msgstr "" -#: config/tc-ppc.c:3297 +#: config/tc-ppc.c:3546 msgid "non-constant byte count" msgstr "" -#: config/tc-ppc.c:3342 +#: config/tc-ppc.c:3594 msgid ".tc not in .toc section" msgstr "" -#: config/tc-ppc.c:3361 +#: config/tc-ppc.c:3613 msgid ".tc with no label" msgstr "" -#: config/tc-ppc.c:3436 +#: config/tc-ppc.c:3724 msgid "No previous section to return to. Directive ignored." msgstr "" #. Section Contents #. unknown -#: config/tc-ppc.c:3855 +#: config/tc-ppc.c:4141 msgid "Unsupported section attribute -- 'a'" msgstr "" -#: config/tc-ppc.c:4045 +#: config/tc-ppc.c:4330 msgid "bad symbol suffix" msgstr "" -#: config/tc-ppc.c:4138 +#: config/tc-ppc.c:4423 msgid "Unrecognized symbol suffix" msgstr "" -#: config/tc-ppc.c:4220 +#: config/tc-ppc.c:4505 msgid "two .function pseudo-ops with no intervening .ef" msgstr "" -#: config/tc-ppc.c:4233 +#: config/tc-ppc.c:4518 msgid ".ef with no preceding .function" msgstr "" -#: config/tc-ppc.c:4361 +#: config/tc-ppc.c:4646 #, c-format msgid "warning: symbol %s has no csect" msgstr "" -#: config/tc-ppc.c:4662 +#: config/tc-ppc.c:4946 msgid "symbol in .toc does not match any .tc" msgstr "" -#: config/tc-ppc.c:4956 config/tc-v850.c:2431 +#: config/tc-ppc.c:5246 config/tc-s390.c:1797 config/tc-v850.c:2420 msgid "unresolved expression that must be resolved" msgstr "" -#: config/tc-ppc.c:4959 -msgid "unsupported relocation type" +#: config/tc-ppc.c:5249 +#, c-format +msgid "unsupported relocation against %s" msgstr "" -#: config/tc-ppc.c:5021 +#: config/tc-ppc.c:5326 #, c-format msgid "cannot emit PC relative %s relocation against %s" msgstr "" -#: config/tc-ppc.c:5026 +#: config/tc-ppc.c:5331 #, c-format msgid "cannot emit PC relative %s relocation" msgstr "" -#: config/tc-ppc.c:5088 +#: config/tc-ppc.c:5454 msgid "must branch to an address a multiple of 4" msgstr "" -#: config/tc-ppc.c:5092 +#: config/tc-ppc.c:5458 #, c-format msgid "@local or @plt branch destination is too far away, %ld bytes" msgstr "" -#: config/tc-ppc.c:5116 +#: config/tc-ppc.c:5491 #, c-format msgid "Gas failure, reloc value %d\n" msgstr "" -#: config/tc-sh.c:878 +#: config/tc-s390.c:421 +msgid "" +" S390 options:\n" +" -mregnames Allow symbolic names for registers\n" +" -mwarn-areg-zero Warn about zero base/index registers\n" +" -mno-regnames Do not allow symbolic names for registers\n" +msgstr "" + +#: config/tc-s390.c:426 +msgid "" +" -V print assembler version number\n" +" -Qy, -Qn ignored\n" +msgstr "" + +#: config/tc-s390.c:456 +#, c-format +msgid "Internal assembler error for instruction format %s" +msgstr "" + +#: config/tc-s390.c:652 +#, c-format +msgid "identifier+constant@%s means identifier@%s+constant" +msgstr "" + +#: config/tc-s390.c:735 +msgid "Can't handle O_big in s390_exp_compare" +msgstr "" + +#: config/tc-s390.c:819 +msgid "Invalid suffix for literal pool entry" +msgstr "" + +#: config/tc-s390.c:876 +msgid "Big number is too big" +msgstr "" + +#: config/tc-s390.c:964 config/tc-s390.c:1473 +#, c-format +msgid "%s relocations do not fit in %d bytes" +msgstr "" + +#: config/tc-s390.c:974 +msgid "relocation not applicable" +msgstr "" + +#: config/tc-s390.c:1117 +msgid "invalid operand suffix" +msgstr "" + +#: config/tc-s390.c:1140 +msgid "syntax error; missing '(' after displacement" +msgstr "" + +#: config/tc-s390.c:1150 config/tc-s390.c:1183 config/tc-s390.c:1202 +msgid "syntax error; expected ," +msgstr "" + +#: config/tc-s390.c:1177 +msgid "syntax error; missing ')' after base register" +msgstr "" + +#: config/tc-s390.c:1195 +msgid "syntax error; ')' not allowed here" +msgstr "" + +#: config/tc-s390.c:1353 config/tc-s390.c:1373 config/tc-s390.c:1386 +msgid "Invalid .insn format\n" +msgstr "" + +#: config/tc-s390.c:1361 +#, c-format +msgid "Unrecognized opcode format: `%s'" +msgstr "" + +#: config/tc-s390.c:1389 +msgid "second operand of .insn not a constant\n" +msgstr "" + +#: config/tc-s390.c:1392 +msgid "missing comma after insn constant\n" +msgstr "" + +#: config/tc-s390.c:1703 +msgid "unresolved fx_subsy symbol that must be resolved" +msgstr "" + +#: config/tc-s390.c:1800 +msgid "unsupported relocation type" +msgstr "" + +#: config/tc-sh.c:89 +msgid "directive .big encountered when option -big required" +msgstr "" + +#: config/tc-sh.c:100 +msgid "directive .little encountered when option -little required" +msgstr "" + +#: config/tc-sh.c:909 msgid "illegal register after @-" msgstr "" -#: config/tc-sh.c:894 +#: config/tc-sh.c:925 msgid "must be @(r0,...)" msgstr "" -#: config/tc-sh.c:910 +#: config/tc-sh.c:949 msgid "syntax error in @(r0,...)" msgstr "" -#: config/tc-sh.c:943 config/tc-sh.c:948 +#: config/tc-sh.c:954 +msgid "syntax error in @(r0...)" +msgstr "" + +#: config/tc-sh.c:987 config/tc-sh.c:992 msgid "syntax error in @(disp,[Rn, gbr, pc])" msgstr "" -#: config/tc-sh.c:953 +#: config/tc-sh.c:997 msgid "expecting )" msgstr "" -#: config/tc-sh.c:962 +#: config/tc-sh.c:1005 msgid "illegal register after @" msgstr "" -#: config/tc-sh.c:1523 +#: config/tc-sh.c:1553 #, c-format msgid "Invalid register: 'r%d'" msgstr "" -#: config/tc-sh.c:1686 +#: config/tc-sh.c:1716 msgid "insn can't be combined with parallel processing insn" msgstr "" -#: config/tc-sh.c:1693 config/tc-sh.c:1704 +#: config/tc-sh.c:1723 config/tc-sh.c:1734 msgid "multiple movx specifications" msgstr "" -#: config/tc-sh.c:1698 config/tc-sh.c:1725 +#: config/tc-sh.c:1728 config/tc-sh.c:1755 msgid "multiple movy specifications" msgstr "" -#: config/tc-sh.c:1706 +#: config/tc-sh.c:1736 msgid "invalid movx address register" msgstr "" -#: config/tc-sh.c:1712 config/tc-sh.c:1717 +#: config/tc-sh.c:1742 config/tc-sh.c:1747 msgid "invalid movx dsp register" msgstr "" -#: config/tc-sh.c:1734 config/tc-sh.c:1739 +#: config/tc-sh.c:1764 config/tc-sh.c:1769 msgid "invalid movy dsp register" msgstr "" -#: config/tc-sh.c:1743 +#: config/tc-sh.c:1773 msgid "invalid movy address register" msgstr "" -#: config/tc-sh.c:1749 +#: config/tc-sh.c:1779 msgid "dsp immediate shift value not constant" msgstr "" -#: config/tc-sh.c:1756 config/tc-sh.c:1769 +#: config/tc-sh.c:1786 config/tc-sh.c:1799 msgid "multiple parallel processing specifications" msgstr "" -#: config/tc-sh.c:1762 +#: config/tc-sh.c:1792 msgid "multiple condition specifications" msgstr "" -#: config/tc-sh.c:1778 +#: config/tc-sh.c:1808 msgid "insn cannot be combined with pmuls" msgstr "" -#: config/tc-sh.c:1795 +#: config/tc-sh.c:1825 msgid "bad padd / psub pmuls output operand" msgstr "" -#: config/tc-sh.c:1805 +#: config/tc-sh.c:1835 msgid "condition not followed by conditionalizable insn" msgstr "" -#: config/tc-sh.c:1815 +#: config/tc-sh.c:1845 msgid "unrecognized characters at end of parallel processing insn" msgstr "" -#: config/tc-sh.c:1931 +#: config/tc-sh.c:1961 #, c-format msgid "excess operands: '%s'" msgstr "" -#: config/tc-sh.c:2099 +#: config/tc-sh.c:2131 msgid ".uses pseudo-op seen when not relaxing" msgstr "" -#: config/tc-sh.c:2105 +#: config/tc-sh.c:2137 msgid "bad .uses format" msgstr "" -#: config/tc-sh.c:2166 +#: config/tc-sh.c:2203 msgid "" "SH options:\n" "-little\t\t\tgenerate little endian code\n" +"-big\t\t\tgenerate big endian code\n" "-relax\t\t\talter jump instructions for long displacements\n" "-small\t\t\talign sections to 4 byte boundaries, not 16\n" "-dsp\t\t\tenable sh-dsp insns, and disable sh3e / sh4 insns.\n" msgstr "" -#: config/tc-sh.c:2177 config/tc-w65.c:862 -msgid "call to tc_Nout_fix_to_chars \n" -msgstr "" - -#: config/tc-sh.c:2261 +#: config/tc-sh.c:2292 msgid ".uses does not refer to a local symbol in the same section" msgstr "" -#: config/tc-sh.c:2280 +#: config/tc-sh.c:2311 msgid "can't find fixup pointed to by .uses" msgstr "" -#: config/tc-sh.c:2303 +#: config/tc-sh.c:2334 msgid ".uses target does not refer to a local symbol in the same section" msgstr "" -#: config/tc-sh.c:2401 +#: config/tc-sh.c:2432 msgid "displacement overflows 12-bit field" msgstr "" -#: config/tc-sh.c:2404 +#: config/tc-sh.c:2435 #, c-format msgid "displacement to defined symbol %s overflows 12-bit field" msgstr "" -#: config/tc-sh.c:2408 +#: config/tc-sh.c:2439 #, c-format msgid "displacement to undefined symbol %s overflows 12-bit field" msgstr "" -#: config/tc-sh.c:2486 +#: config/tc-sh.c:2517 msgid "displacement overflows 8-bit field" msgstr "" -#: config/tc-sh.c:2489 +#: config/tc-sh.c:2520 #, c-format msgid "displacement to defined symbol %s overflows 8-bit field" msgstr "" -#: config/tc-sh.c:2493 +#: config/tc-sh.c:2524 #, c-format msgid "displacement to undefined symbol %s overflows 8-bit field " msgstr "" -#: config/tc-sh.c:2506 +#: config/tc-sh.c:2537 #, c-format msgid "overflow in branch to %s; converted into longer instruction sequence" msgstr "" -#: config/tc-sh.c:2581 config/tc-sh.c:2629 config/tc-sparc.c:4084 -#: config/tc-sparc.c:4109 +#: config/tc-sh.c:2612 config/tc-sh.c:2660 config/tc-sparc.c:4093 +#: config/tc-sparc.c:4118 msgid "misaligned data" msgstr "" -#: config/tc-sh.c:3003 +#: config/tc-sh.c:3022 msgid "misaligned offset" msgstr "" -#: config/tc-sparc.c:280 +#: config/tc-sparc.c:281 msgid "Invalid default architecture, broken assembler." msgstr "" -#: config/tc-sparc.c:284 config/tc-sparc.c:487 +#: config/tc-sparc.c:285 config/tc-sparc.c:488 msgid "Bad opcode table, broken assembler." msgstr "" -#: config/tc-sparc.c:479 +#: config/tc-sparc.c:480 #, c-format msgid "invalid architecture -xarch=%s" msgstr "" -#: config/tc-sparc.c:481 +#: config/tc-sparc.c:482 #, c-format msgid "invalid architecture -A%s" msgstr "" -#: config/tc-sparc.c:585 +#: config/tc-sparc.c:549 +#, c-format +msgid "No compiled in support for %d bit object file format" +msgstr "" + +#: config/tc-sparc.c:586 msgid "Unrecognized option following -K" msgstr "" -#: config/tc-sparc.c:626 +#: config/tc-sparc.c:627 msgid "SPARC options:\n" msgstr "" -#: config/tc-sparc.c:655 +#: config/tc-sparc.c:656 msgid "" "\n" "\t\t\tspecify variant of SPARC architecture\n" @@ -6409,34 +7080,34 @@ msgid "" "-no-relax\t\tavoid changing any jumps and branches\n" msgstr "" -#: config/tc-sparc.c:663 +#: config/tc-sparc.c:664 msgid "-k\t\t\tgenerate PIC\n" msgstr "" -#: config/tc-sparc.c:667 +#: config/tc-sparc.c:668 msgid "" "-32\t\t\tcreate 32 bit object file\n" "-64\t\t\tcreate 64 bit object file\n" msgstr "" -#: config/tc-sparc.c:670 +#: config/tc-sparc.c:671 #, c-format msgid "\t\t\t[default is %d]\n" msgstr "" -#: config/tc-sparc.c:672 +#: config/tc-sparc.c:673 msgid "" "-TSO\t\t\tuse Total Store Ordering\n" "-PSO\t\t\tuse Partial Store Ordering\n" "-RMO\t\t\tuse Relaxed Memory Ordering\n" msgstr "" -#: config/tc-sparc.c:676 +#: config/tc-sparc.c:677 #, c-format msgid "\t\t\t[default is %s]\n" msgstr "" -#: config/tc-sparc.c:678 +#: config/tc-sparc.c:679 msgid "" "-KPIC\t\t\tgenerate PIC\n" "-V\t\t\tprint assembler version number\n" @@ -6449,7 +7120,7 @@ msgid "" "-s\t\t\tignored\n" msgstr "" -#: config/tc-sparc.c:690 +#: config/tc-sparc.c:691 msgid "" "-EL\t\t\tgenerate code for a little endian machine\n" "-EB\t\t\tgenerate code for a big endian machine\n" @@ -6457,275 +7128,314 @@ msgid "" " instructions and little endian data.\n" msgstr "" -#: config/tc-sparc.c:810 +#: config/tc-sparc.c:811 #, c-format msgid "Internal error: losing opcode: `%s' \"%s\"\n" msgstr "" -#: config/tc-sparc.c:829 +#: config/tc-sparc.c:830 #, c-format msgid "Internal error: can't find opcode `%s' for `%s'\n" msgstr "" -#: config/tc-sparc.c:975 +#: config/tc-sparc.c:976 msgid "Support for 64-bit arithmetic not compiled in." msgstr "" -#: config/tc-sparc.c:1022 +#: config/tc-sparc.c:1023 msgid "set: number not in 0..4294967295 range" msgstr "" -#: config/tc-sparc.c:1029 +#: config/tc-sparc.c:1030 msgid "set: number not in -2147483648..4294967295 range" msgstr "" -#: config/tc-sparc.c:1089 +#: config/tc-sparc.c:1090 msgid "setsw: number not in -2147483648..4294967295 range" msgstr "" -#: config/tc-sparc.c:1138 +#: config/tc-sparc.c:1139 msgid "setx: temporary register same as destination register" msgstr "" -#: config/tc-sparc.c:1209 +#: config/tc-sparc.c:1210 msgid "setx: illegal temporary register g0" msgstr "" -#: config/tc-sparc.c:1306 +#: config/tc-sparc.c:1307 msgid "FP branch in delay slot" msgstr "" -#: config/tc-sparc.c:1322 +#: config/tc-sparc.c:1323 msgid "FP branch preceded by FP instruction; NOP inserted" msgstr "" -#: config/tc-sparc.c:1362 +#: config/tc-sparc.c:1363 msgid "failed special case insn sanity check" msgstr "" -#: config/tc-sparc.c:1450 +#: config/tc-sparc.c:1451 msgid ": invalid membar mask name" msgstr "" -#: config/tc-sparc.c:1466 +#: config/tc-sparc.c:1467 msgid ": invalid membar mask expression" msgstr "" -#: config/tc-sparc.c:1471 +#: config/tc-sparc.c:1472 msgid ": invalid membar mask number" msgstr "" -#: config/tc-sparc.c:1486 +#: config/tc-sparc.c:1487 msgid ": invalid siam mode expression" msgstr "" -#: config/tc-sparc.c:1491 +#: config/tc-sparc.c:1492 msgid ": invalid siam mode number" msgstr "" -#: config/tc-sparc.c:1507 +#: config/tc-sparc.c:1508 msgid ": invalid prefetch function name" msgstr "" -#: config/tc-sparc.c:1515 +#: config/tc-sparc.c:1516 msgid ": invalid prefetch function expression" msgstr "" -#: config/tc-sparc.c:1520 +#: config/tc-sparc.c:1521 msgid ": invalid prefetch function number" msgstr "" -#: config/tc-sparc.c:1548 config/tc-sparc.c:1560 +#: config/tc-sparc.c:1549 config/tc-sparc.c:1561 msgid ": unrecognizable privileged register" msgstr "" -#: config/tc-sparc.c:1584 config/tc-sparc.c:1609 +#: config/tc-sparc.c:1585 config/tc-sparc.c:1610 msgid ": unrecognizable v9a or v9b ancillary state register" msgstr "" -#: config/tc-sparc.c:1589 +#: config/tc-sparc.c:1590 msgid ": rd on write only ancillary state register" msgstr "" #. %sys_tick and %sys_tick_cmpr are v9bnotv9a -#: config/tc-sparc.c:1597 +#: config/tc-sparc.c:1598 msgid ": unrecognizable v9a ancillary state register" msgstr "" -#: config/tc-sparc.c:1633 +#: config/tc-sparc.c:1634 msgid ": asr number must be between 16 and 31" msgstr "" -#: config/tc-sparc.c:1641 +#: config/tc-sparc.c:1642 msgid ": asr number must be between 0 and 31" msgstr "" -#: config/tc-sparc.c:1651 +#: config/tc-sparc.c:1652 msgid ": expecting %asrN" msgstr "" -#: config/tc-sparc.c:1979 +#: config/tc-sparc.c:1980 msgid "detected global register use not covered by .register pseudo-op" msgstr "" -#: config/tc-sparc.c:2050 +#: config/tc-sparc.c:2051 msgid ": There are only 64 f registers; [0-63]" msgstr "" -#: config/tc-sparc.c:2052 config/tc-sparc.c:2064 +#: config/tc-sparc.c:2053 config/tc-sparc.c:2065 msgid ": There are only 32 f registers; [0-31]" msgstr "" -#: config/tc-sparc.c:2182 config/tc-sparc.c:2218 +#: config/tc-sparc.c:2183 config/tc-sparc.c:2219 +#, c-format msgid "Illegal operands: %%%s requires arguments in ()" msgstr "" -#: config/tc-sparc.c:2230 +#: config/tc-sparc.c:2231 +#, c-format msgid "" "Illegal operands: Can't do arithmetics other than + and - involving %%%s()" msgstr "" -#: config/tc-sparc.c:2340 +#: config/tc-sparc.c:2341 +#, c-format msgid "Illegal operands: Can't add non-constant expression to %%%s()" msgstr "" -#: config/tc-sparc.c:2350 +#: config/tc-sparc.c:2351 +#, c-format msgid "" "Illegal operands: Can't do arithmetics involving %%%s() of a relocatable " "symbol" msgstr "" -#: config/tc-sparc.c:2368 +#: config/tc-sparc.c:2369 msgid ": PC-relative operand can't be a constant" msgstr "" -#: config/tc-sparc.c:2401 +#: config/tc-sparc.c:2402 msgid ": invalid ASI name" msgstr "" -#: config/tc-sparc.c:2409 +#: config/tc-sparc.c:2410 msgid ": invalid ASI expression" msgstr "" -#: config/tc-sparc.c:2414 +#: config/tc-sparc.c:2415 msgid ": invalid ASI number" msgstr "" -#: config/tc-sparc.c:2511 +#: config/tc-sparc.c:2512 msgid "OPF immediate operand out of range (0-0x1ff)" msgstr "" -#: config/tc-sparc.c:2516 +#: config/tc-sparc.c:2517 msgid "non-immediate OPF operand, ignored" msgstr "" -#: config/tc-sparc.c:2535 +#: config/tc-sparc.c:2536 msgid ": invalid cpreg name" msgstr "" -#: config/tc-sparc.c:2564 +#: config/tc-sparc.c:2565 #, c-format msgid "Illegal operands%s" msgstr "" -#: config/tc-sparc.c:2598 +#: config/tc-sparc.c:2599 #, c-format msgid "architecture bumped from \"%s\" to \"%s\" on \"%s\"" msgstr "" -#: config/tc-sparc.c:2634 +#: config/tc-sparc.c:2635 #, c-format msgid "Architecture mismatch on \"%s\"." msgstr "" -#: config/tc-sparc.c:2635 +#: config/tc-sparc.c:2636 #, c-format msgid " (Requires %s; requested architecture is %s.)" msgstr "" -#: config/tc-sparc.c:3249 +#: config/tc-sparc.c:3246 #, c-format msgid "bad or unhandled relocation type: 0x%02x" msgstr "" -#: config/tc-sparc.c:3380 +#: config/tc-sparc.c:3384 #, c-format msgid "internal error: can't export reloc type %d (`%s')" msgstr "" -#: config/tc-sparc.c:3552 +#: config/tc-sparc.c:3546 +#, c-format +msgid "BSS length (%d.) <0! Ignored." +msgstr "" + +#: config/tc-sparc.c:3558 msgid "bad .reserve segment -- expected BSS segment" msgstr "" -#: config/tc-sparc.c:3569 +#: config/tc-sparc.c:3575 read.c:2040 msgid "missing alignment" msgstr "" -#: config/tc-sparc.c:3580 config/tc-sparc.c:3730 +#: config/tc-sparc.c:3586 config/tc-sparc.c:3736 #, c-format msgid "alignment too large; assuming %d" msgstr "" -#: config/tc-sparc.c:3586 config/tc-sparc.c:3736 +#: config/tc-sparc.c:3592 config/tc-sparc.c:3742 msgid "negative alignment" msgstr "" -#: config/tc-sparc.c:3596 config/tc-sparc.c:3759 +#: config/tc-sparc.c:3602 config/tc-sparc.c:3765 read.c:1249 read.c:2056 msgid "alignment not a power of 2" msgstr "" -#: config/tc-sparc.c:3716 +#: config/tc-sparc.c:3680 config/tc-v850.c:260 +msgid "Expected comma after symbol-name" +msgstr "" + +#: config/tc-sparc.c:3708 config/tc-v850.c:293 +#, c-format +msgid "Length of .comm \"%s\" is already %ld. Not changed to %d." +msgstr "" + +#: config/tc-sparc.c:3722 msgid "Expected comma after common length" msgstr "" -#: config/tc-sparc.c:3951 config/tc-sparc.c:3961 +#: config/tc-sparc.c:3963 config/tc-sparc.c:3973 +#, c-format msgid "register syntax is .register %%g[2367],{#scratch|symbolname|#ignore}" msgstr "" -#: config/tc-sparc.c:3979 +#: config/tc-sparc.c:3991 msgid "redefinition of global register" msgstr "" -#: config/tc-sparc.c:3990 +#: config/tc-sparc.c:4002 #, c-format msgid "Register symbol %s already defined." msgstr "" -#: config/tc-sparc.h:54 +#: config/tc-sparc.c:4211 +#, c-format +msgid "Illegal operands: %%r_plt in %d-byte data field" +msgstr "" + +#: config/tc-sparc.c:4248 +#, c-format +msgid "Illegal operands: Only %%r_%s%d allowed in %d-byte data fields" +msgstr "" + +#: config/tc-sparc.c:4256 config/tc-sparc.c:4287 config/tc-sparc.c:4296 +#, c-format +msgid "Illegal operands: %%r_%s%d requires arguments in ()" +msgstr "" + +#: config/tc-sparc.c:4305 +#, c-format +msgid "Illegal operands: garbage after %%r_%s%d()" +msgstr "" + +#: config/tc-sparc.h:55 msgid "sparc convert_frag\n" msgstr "" -#: config/tc-sparc.h:56 +#: config/tc-sparc.h:57 msgid "estimate_size_before_relax called" msgstr "" -#: config/tc-tahoe.c:386 +#: config/tc-tahoe.c:403 msgid "The -a option doesn't exist. (Despite what the man page says!" msgstr "" -#: config/tc-tahoe.c:390 config/tc-vax.c:3132 +#: config/tc-tahoe.c:407 config/tc-vax.c:3125 #, c-format msgid "Displacement length %s ignored!" msgstr "" -#: config/tc-tahoe.c:394 config/tc-vax.c:3124 +#: config/tc-tahoe.c:411 config/tc-vax.c:3117 msgid "SYMBOL TABLE not implemented" msgstr "" -#: config/tc-tahoe.c:398 config/tc-vax.c:3128 +#: config/tc-tahoe.c:415 config/tc-vax.c:3121 msgid "TOKEN TRACE not implemented" msgstr "" -#: config/tc-tahoe.c:402 config/tc-vax.c:3136 +#: config/tc-tahoe.c:419 config/tc-vax.c:3129 #, c-format msgid "I don't need or use temp. file \"%s\"." msgstr "" -#: config/tc-tahoe.c:406 config/tc-vax.c:3140 +#: config/tc-tahoe.c:423 config/tc-vax.c:3133 msgid "I don't use an interpass file! -V ignored" msgstr "" -#: config/tc-tahoe.c:420 +#: config/tc-tahoe.c:437 msgid "" "Tahoe options:\n" "-a\t\t\tignored\n" @@ -6737,1047 +7447,1051 @@ msgid "" "-V\t\t\tignored\n" msgstr "" -#: config/tc-tahoe.c:1074 +#: config/tc-tahoe.c:1066 msgid "Casting a branch displacement is bad form, and is ignored." msgstr "" -#: config/tc-tahoe.c:1130 +#: config/tc-tahoe.c:1122 msgid "Couldn't parse the [index] in this operand." msgstr "" -#: config/tc-tahoe.c:1136 +#: config/tc-tahoe.c:1128 msgid "Couldn't find the opening '[' for the index of this operand." msgstr "" -#: config/tc-tahoe.c:1176 +#: config/tc-tahoe.c:1168 msgid "Couldn't find the opening '(' for the deref of this operand." msgstr "" -#: config/tc-tahoe.c:1186 +#: config/tc-tahoe.c:1178 msgid "Operand can't be both pre-inc and post-dec." msgstr "" -#: config/tc-tahoe.c:1216 +#: config/tc-tahoe.c:1208 msgid "I parsed 2 registers in this operand." msgstr "" -#: config/tc-tahoe.c:1266 +#: config/tc-tahoe.c:1258 msgid "Can't relocate expression error." msgstr "" #. This is an error. Tahoe doesn't allow any expressions #. bigger that a 32 bit long word. Any bigger has to be referenced #. by address. -#: config/tc-tahoe.c:1273 +#: config/tc-tahoe.c:1265 msgid "Expression is too large for a 32 bits." msgstr "" -#: config/tc-tahoe.c:1278 +#: config/tc-tahoe.c:1270 msgid "Junk at end of expression." msgstr "" -#: config/tc-tahoe.c:1317 +#: config/tc-tahoe.c:1309 msgid "Syntax error in direct register mode." msgstr "" -#: config/tc-tahoe.c:1319 +#: config/tc-tahoe.c:1311 msgid "You can't index a register in direct register mode." msgstr "" -#: config/tc-tahoe.c:1322 +#: config/tc-tahoe.c:1314 msgid "SP can't be the source operand with direct register addressing." msgstr "" -#: config/tc-tahoe.c:1324 +#: config/tc-tahoe.c:1316 msgid "Can't take the address of a register." msgstr "" -#: config/tc-tahoe.c:1326 +#: config/tc-tahoe.c:1318 msgid "Direct Register can't be used in a branch." msgstr "" -#: config/tc-tahoe.c:1328 +#: config/tc-tahoe.c:1320 msgid "For quad access, the register must be even and < 14." msgstr "" -#: config/tc-tahoe.c:1330 +#: config/tc-tahoe.c:1322 msgid "You can't cast a direct register." msgstr "" -#: config/tc-tahoe.c:1336 +#: config/tc-tahoe.c:1328 msgid "Using reg 14 for quadwords can tromp the FP register." msgstr "" -#: config/tc-tahoe.c:1348 +#: config/tc-tahoe.c:1340 msgid "Syntax error in auto-dec mode." msgstr "" -#: config/tc-tahoe.c:1350 +#: config/tc-tahoe.c:1342 msgid "You can't have an index auto dec mode." msgstr "" -#: config/tc-tahoe.c:1352 +#: config/tc-tahoe.c:1344 msgid "Auto dec mode cant be used for reading." msgstr "" -#: config/tc-tahoe.c:1354 +#: config/tc-tahoe.c:1346 msgid "Auto dec only works of the SP register." msgstr "" -#: config/tc-tahoe.c:1356 +#: config/tc-tahoe.c:1348 msgid "Auto dec can't be used in a branch." msgstr "" -#: config/tc-tahoe.c:1358 +#: config/tc-tahoe.c:1350 msgid "Auto dec won't work with quadwords." msgstr "" -#: config/tc-tahoe.c:1365 +#: config/tc-tahoe.c:1357 msgid "Syntax error in one of the auto-inc modes." msgstr "" -#: config/tc-tahoe.c:1371 +#: config/tc-tahoe.c:1363 msgid "Auto inc deferred only works of the SP register." msgstr "" -#: config/tc-tahoe.c:1373 +#: config/tc-tahoe.c:1365 msgid "You can't have an index auto inc deferred mode." msgstr "" -#: config/tc-tahoe.c:1375 config/tc-tahoe.c:1386 +#: config/tc-tahoe.c:1367 config/tc-tahoe.c:1378 msgid "Auto inc can't be used in a branch." msgstr "" -#: config/tc-tahoe.c:1382 +#: config/tc-tahoe.c:1374 msgid "You can't write to an auto inc register." msgstr "" -#: config/tc-tahoe.c:1384 +#: config/tc-tahoe.c:1376 msgid "Auto inc only works of the SP register." msgstr "" -#: config/tc-tahoe.c:1388 +#: config/tc-tahoe.c:1380 msgid "Auto inc won't work with quadwords." msgstr "" -#: config/tc-tahoe.c:1390 +#: config/tc-tahoe.c:1382 msgid "You can't have an index in auto inc mode." msgstr "" -#: config/tc-tahoe.c:1398 +#: config/tc-tahoe.c:1390 msgid "You can't index the sp register." msgstr "" -#: config/tc-tahoe.c:1404 +#: config/tc-tahoe.c:1396 msgid "Syntax error in register displaced mode." msgstr "" -#: config/tc-tahoe.c:1423 +#: config/tc-tahoe.c:1415 msgid "An offest is needed for this operand." msgstr "" -#: config/tc-tahoe.c:1435 +#: config/tc-tahoe.c:1427 msgid "You can't index a register in immediate mode." msgstr "" -#: config/tc-tahoe.c:1437 +#: config/tc-tahoe.c:1429 msgid "Immediate access can't be used as an address." msgstr "" -#: config/tc-tahoe.c:1548 +#: config/tc-tahoe.c:1540 #, c-format msgid "Compiler bug: ODD number of bytes in arg structure %s." msgstr "" -#: config/tc-tahoe.c:1575 config/tc-vax.c:1839 +#: config/tc-tahoe.c:1567 config/tc-vax.c:1835 msgid "Not enough operands" msgstr "" -#: config/tc-tahoe.c:1585 config/tc-vax.c:1846 +#: config/tc-tahoe.c:1577 config/tc-vax.c:1842 msgid "Too many operands" msgstr "" -#: config/tc-tahoe.c:1636 config/tc-vax.c:364 +#: config/tc-tahoe.c:1628 config/tc-vax.c:378 #, c-format msgid "Ignoring statement due to \"%s\"" msgstr "" -#: config/tc-tahoe.c:1731 +#: config/tc-tahoe.c:1723 #, c-format msgid "Compliler bug: Got a case (%d) I wasn't expecting." msgstr "" -#: config/tc-tahoe.c:1825 +#: config/tc-tahoe.c:1817 msgid "Real branch displacements must be expressions." msgstr "" -#: config/tc-tahoe.c:1828 +#: config/tc-tahoe.c:1820 #, c-format msgid "Complier error: I got an unknown synthetic branch :%c" msgstr "" -#: config/tc-tahoe.c:1969 +#: config/tc-tahoe.c:1961 #, c-format msgid "Barf, bad mode %x\n" msgstr "" #. Only word (et al.), align, or conditionals are allowed within #. .struct/.union. -#: config/tc-tic54x.c:75 +#: config/tc-tic54x.c:80 msgid "pseudo-op illegal within .struct/.union" msgstr "" -#: config/tc-tic54x.c:84 +#: config/tc-tic54x.c:89 msgid "C54x-specific command line options:\n" msgstr "" -#: config/tc-tic54x.c:85 +#: config/tc-tic54x.c:90 msgid "-mfar-mode | -mf Use extended addressing\n" msgstr "" -#: config/tc-tic54x.c:86 +#: config/tc-tic54x.c:91 msgid "-mcpu=<CPU version> Specify the CPU version\n" msgstr "" -#: config/tc-tic54x.c:88 +#: config/tc-tic54x.c:93 msgid "-mcoff-version={0|1|2} Select COFF version\n" msgstr "" -#: config/tc-tic54x.c:90 +#: config/tc-tic54x.c:95 msgid "-merrors-to-file <filename>\n" msgstr "" -#: config/tc-tic54x.c:91 +#: config/tc-tic54x.c:96 msgid "-me <filename> Redirect errors to a file\n" msgstr "" -#: config/tc-tic54x.c:351 +#: config/tc-tic54x.c:348 msgid "Comma and symbol expected for '.asg STRING, SYMBOL'" msgstr "" -#: config/tc-tic54x.c:405 +#: config/tc-tic54x.c:401 msgid "Unterminated string after absolute expression" msgstr "" -#: config/tc-tic54x.c:413 +#: config/tc-tic54x.c:409 msgid "Comma and symbol expected for '.eval EXPR, SYMBOL'" msgstr "" -#: config/tc-tic54x.c:425 +#: config/tc-tic54x.c:421 msgid "symbols assigned with .eval must begin with a letter" msgstr "" -#: config/tc-tic54x.c:682 +#: config/tc-tic54x.c:675 msgid "Offset on nested structures is ignored" msgstr "" -#: config/tc-tic54x.c:732 +#: config/tc-tic54x.c:725 #, c-format msgid ".end%s without preceding .%s" msgstr "" -#: config/tc-tic54x.c:799 +#: config/tc-tic54x.c:791 #, c-format msgid "Unrecognized struct/union tag '%s'" msgstr "" -#: config/tc-tic54x.c:801 +#: config/tc-tic54x.c:793 msgid ".tag requires a structure tag" msgstr "" -#: config/tc-tic54x.c:807 +#: config/tc-tic54x.c:799 msgid "Label required for .tag" msgstr "" -#: config/tc-tic54x.c:825 +#: config/tc-tic54x.c:817 #, c-format msgid ".tag target '%s' undefined" msgstr "" -#: config/tc-tic54x.c:887 +#: config/tc-tic54x.c:879 #, c-format msgid ".field count '%d' out of range (1 <= X <= 32)" msgstr "" -#: config/tc-tic54x.c:917 +#: config/tc-tic54x.c:909 #, c-format msgid "Unrecognized field type '%c'" msgstr "" #. Disallow .byte with a non constant expression that will #. require relocation. -#: config/tc-tic54x.c:1052 +#: config/tc-tic54x.c:1044 msgid "Relocatable values require at least WORD storage" msgstr "" -#: config/tc-tic54x.c:1114 +#: config/tc-tic54x.c:1105 msgid "Use of .def/.ref is deprecated. Use .global instead" msgstr "" -#: config/tc-tic54x.c:1305 +#: config/tc-tic54x.c:1298 msgid ".space/.bes repeat count is negative, ignored" msgstr "" -#: config/tc-tic54x.c:1310 +#: config/tc-tic54x.c:1303 msgid ".space/.bes repeat count is zero, ignored" msgstr "" -#: config/tc-tic54x.c:1388 +#: config/tc-tic54x.c:1380 msgid "Missing size argument" msgstr "" -#: config/tc-tic54x.c:1525 +#: config/tc-tic54x.c:1514 msgid "CPU version has already been set" msgstr "" -#: config/tc-tic54x.c:1529 +#: config/tc-tic54x.c:1518 #, c-format msgid "Unrecognized version '%s'" msgstr "" -#: config/tc-tic54x.c:1535 +#: config/tc-tic54x.c:1524 msgid "Changing of CPU version on the fly not supported" msgstr "" -#: config/tc-tic54x.c:1670 +#: config/tc-tic54x.c:1657 msgid "p2align not supported on this target" msgstr "" -#: config/tc-tic54x.c:1683 +#: config/tc-tic54x.c:1669 msgid "Argument to .even ignored" msgstr "" -#: config/tc-tic54x.c:1730 +#: config/tc-tic54x.c:1715 msgid "Invalid field size, must be from 1 to 32" msgstr "" -#: config/tc-tic54x.c:1743 +#: config/tc-tic54x.c:1728 msgid "field size must be 16 when value is relocatable" msgstr "" -#: config/tc-tic54x.c:1757 +#: config/tc-tic54x.c:1742 msgid "field value truncated" msgstr "" -#: config/tc-tic54x.c:1863 config/tc-tic54x.c:2175 +#: config/tc-tic54x.c:1846 config/tc-tic54x.c:2148 #, c-format msgid "Unrecognized section '%s'" msgstr "" -#: config/tc-tic54x.c:1872 +#: config/tc-tic54x.c:1855 msgid "Current section is unitialized, section name required for .clink" msgstr "" -#: config/tc-tic54x.c:2084 +#: config/tc-tic54x.c:2061 msgid "ENDLOOP without corresponding LOOP" msgstr "" -#: config/tc-tic54x.c:2127 +#: config/tc-tic54x.c:2101 msgid "Mixing of normal and extended addressing not supported" msgstr "" -#: config/tc-tic54x.c:2133 +#: config/tc-tic54x.c:2107 msgid "Extended addressing not supported on the specified CPU" msgstr "" -#: config/tc-tic54x.c:2181 +#: config/tc-tic54x.c:2154 msgid ".sblock may be used for initialized sections only" msgstr "" -#: config/tc-tic54x.c:2212 +#: config/tc-tic54x.c:2184 msgid "Symbol missing for .set/.equ" msgstr "" -#: config/tc-tic54x.c:2269 +#: config/tc-tic54x.c:2240 msgid ".var may only be used within a macro definition" msgstr "" -#: config/tc-tic54x.c:2277 +#: config/tc-tic54x.c:2248 msgid "Substitution symbols must begin with a letter" msgstr "" -#: config/tc-tic54x.c:2368 +#: config/tc-tic54x.c:2338 #, c-format msgid "Can't open macro library file '%s' for reading." msgstr "" -#: config/tc-tic54x.c:2375 +#: config/tc-tic54x.c:2345 #, c-format msgid "File '%s' not in macro archive format" msgstr "" -#: config/tc-tic54x.c:2532 +#: config/tc-tic54x.c:2504 #, c-format msgid "Bad COFF version '%s'" msgstr "" -#: config/tc-tic54x.c:2541 +#: config/tc-tic54x.c:2513 #, c-format msgid "Bad CPU version '%s'" msgstr "" -#: config/tc-tic54x.c:2553 config/tc-tic54x.c:2556 +#: config/tc-tic54x.c:2525 config/tc-tic54x.c:2528 #, c-format msgid "Can't redirect stderr to the file '%s'" msgstr "" -#: config/tc-tic54x.c:2702 +#: config/tc-tic54x.c:2662 #, c-format msgid "Undefined substitution symbol '%s'" msgstr "" -#: config/tc-tic54x.c:3390 +#: config/tc-tic54x.c:3335 msgid "Badly formed address expression" msgstr "" -#: config/tc-tic54x.c:3655 +#: config/tc-tic54x.c:3593 #, c-format msgid "Invalid dmad syntax '%s'" msgstr "" -#: config/tc-tic54x.c:3771 +#: config/tc-tic54x.c:3707 msgid "Address mode *+ARx is write-only. Results of reading are undefined." msgstr "" -#: config/tc-tic54x.c:3791 +#: config/tc-tic54x.c:3727 #, c-format msgid "Unrecognized indirect address format \"%s\"" msgstr "" -#: config/tc-tic54x.c:3828 +#: config/tc-tic54x.c:3762 #, c-format msgid "Operand '%s' out of range (%d <= x <= %d)" msgstr "" -#: config/tc-tic54x.c:3848 +#: config/tc-tic54x.c:3782 msgid "Error in relocation handling" msgstr "" -#: config/tc-tic54x.c:3869 config/tc-tic54x.c:3933 config/tc-tic54x.c:3963 +#: config/tc-tic54x.c:3801 config/tc-tic54x.c:3863 config/tc-tic54x.c:3889 #, c-format msgid "Unrecognized condition code \"%s\"" msgstr "" -#: config/tc-tic54x.c:3886 +#: config/tc-tic54x.c:3818 #, c-format msgid "Condition \"%s\" does not match preceding group" msgstr "" -#: config/tc-tic54x.c:3894 +#: config/tc-tic54x.c:3826 #, c-format msgid "" "Condition \"%s\" uses a different accumulator from a preceding condition" msgstr "" -#: config/tc-tic54x.c:3901 +#: config/tc-tic54x.c:3833 msgid "Only one comparison conditional allowed" msgstr "" -#: config/tc-tic54x.c:3906 +#: config/tc-tic54x.c:3838 msgid "Only one overflow conditional allowed" msgstr "" -#: config/tc-tic54x.c:3914 +#: config/tc-tic54x.c:3846 #, c-format msgid "Duplicate %s conditional" msgstr "" -#: config/tc-tic54x.c:3948 +#: config/tc-tic54x.c:3876 msgid "Invalid auxiliary register (use AR0-AR7)" msgstr "" -#: config/tc-tic54x.c:3983 +#: config/tc-tic54x.c:3909 msgid "lk addressing modes are invalid for memory-mapped register addressing" msgstr "" -#: config/tc-tic54x.c:3991 +#: config/tc-tic54x.c:3917 msgid "" "Address mode *+ARx is not allowed in memory-mapped register addressing. " "Resulting behavior is undefined." msgstr "" -#: config/tc-tic54x.c:4017 +#: config/tc-tic54x.c:3943 msgid "" "Destination accumulator for each part of this parallel instruction must be " "different" msgstr "" -#: config/tc-tic54x.c:4066 +#: config/tc-tic54x.c:3992 #, c-format msgid "Memory mapped register \"%s\" out of range" msgstr "" -#: config/tc-tic54x.c:4105 +#: config/tc-tic54x.c:4031 msgid "Invalid operand (use 1, 2, or 3)" msgstr "" -#: config/tc-tic54x.c:4130 +#: config/tc-tic54x.c:4056 msgid "A status register or status bit name is required" msgstr "" -#: config/tc-tic54x.c:4140 +#: config/tc-tic54x.c:4066 #, c-format msgid "Unrecognized status bit \"%s\"" msgstr "" -#: config/tc-tic54x.c:4163 +#: config/tc-tic54x.c:4089 #, c-format msgid "Invalid status register \"%s\"" msgstr "" -#: config/tc-tic54x.c:4175 +#: config/tc-tic54x.c:4101 #, c-format msgid "Operand \"%s\" out of range (use 1 or 2)" msgstr "" -#: config/tc-tic54x.c:4375 +#: config/tc-tic54x.c:4302 #, c-format msgid "Unrecognized instruction \"%s\"" msgstr "" -#: config/tc-tic54x.c:4404 +#: config/tc-tic54x.c:4331 #, c-format msgid "Unrecognized operand list '%s' for instruction '%s'" msgstr "" -#: config/tc-tic54x.c:4436 +#: config/tc-tic54x.c:4360 #, c-format msgid "Unrecognized parallel instruction \"%s\"" msgstr "" -#: config/tc-tic54x.c:4488 +#: config/tc-tic54x.c:4410 #, c-format msgid "Invalid operand (s) for parallel instruction \"%s\"" msgstr "" -#: config/tc-tic54x.c:4491 +#: config/tc-tic54x.c:4413 #, c-format msgid "Unrecognized parallel instruction combination \"%s || %s\"" msgstr "" -#: config/tc-tic54x.c:4723 +#: config/tc-tic54x.c:4645 #, c-format msgid "%s symbol recursion stopped at second appearance of '%s'" msgstr "" -#: config/tc-tic54x.c:4762 +#: config/tc-tic54x.c:4684 msgid "Unrecognized substitution symbol function" msgstr "" -#: config/tc-tic54x.c:4767 +#: config/tc-tic54x.c:4689 msgid "Missing '(' after substitution symbol function" msgstr "" -#: config/tc-tic54x.c:4781 +#: config/tc-tic54x.c:4703 msgid "Expecting second argument" msgstr "" -#: config/tc-tic54x.c:4794 config/tc-tic54x.c:4843 +#: config/tc-tic54x.c:4716 config/tc-tic54x.c:4765 msgid "Extra junk in function call, expecting ')'" msgstr "" -#: config/tc-tic54x.c:4819 +#: config/tc-tic54x.c:4741 msgid "Function expects two arguments" msgstr "" -#: config/tc-tic54x.c:4832 +#: config/tc-tic54x.c:4754 msgid "Expecting character constant argument" msgstr "" -#: config/tc-tic54x.c:4838 +#: config/tc-tic54x.c:4760 msgid "Both arguments must be substitution symbols" msgstr "" -#: config/tc-tic54x.c:4891 +#: config/tc-tic54x.c:4813 #, c-format msgid "Invalid subscript (use 1 to %d)" msgstr "" -#: config/tc-tic54x.c:4901 +#: config/tc-tic54x.c:4823 #, c-format msgid "Invalid length (use 0 to %d" msgstr "" -#: config/tc-tic54x.c:4911 +#: config/tc-tic54x.c:4833 msgid "Missing ')' in subscripted substitution symbol expression" msgstr "" -#: config/tc-tic54x.c:4931 +#: config/tc-tic54x.c:4853 msgid "Missing forced substitution terminator ':'" msgstr "" -#: config/tc-tic54x.c:5104 +#: config/tc-tic54x.c:5026 #, c-format msgid "" "Instruction does not fit in available delay slots (%d-word insn, %d slots " "left)" msgstr "" -#: config/tc-tic54x.c:5145 +#: config/tc-tic54x.c:5067 #, c-format msgid "Unrecognized parallel instruction '%s'" msgstr "" -#: config/tc-tic54x.c:5157 +#: config/tc-tic54x.c:5079 #, c-format msgid "Instruction '%s' requires an LP cpu version" msgstr "" -#: config/tc-tic54x.c:5164 +#: config/tc-tic54x.c:5086 #, c-format msgid "Instruction '%s' requires far mode addressing" msgstr "" -#: config/tc-tic54x.c:5176 +#: config/tc-tic54x.c:5098 #, c-format msgid "" "Instruction does not fit in available delay slots (%d-word insn, %d slots " "left). Resulting behavior is undefined." msgstr "" -#: config/tc-tic54x.c:5186 +#: config/tc-tic54x.c:5108 msgid "" "Instructions which cause PC discontinuity are not allowed in a delay slot. " "Resulting behavior is undefined." msgstr "" -#: config/tc-tic54x.c:5197 +#: config/tc-tic54x.c:5119 #, c-format msgid "'%s' is not repeatable. Resulting behavior is undefined." msgstr "" -#: config/tc-tic54x.c:5201 +#: config/tc-tic54x.c:5123 msgid "" "Instructions using long offset modifiers or absolute addresses are not " "repeatable. Resulting behavior is undefined." msgstr "" -#: config/tc-tic54x.c:5392 +#: config/tc-tic54x.c:5314 #, c-format msgid "Unsupported relocation size %d" msgstr "" -#: config/tc-tic54x.c:5544 +#: config/tc-tic54x.c:5468 msgid "non-absolute value used with .space/.bes" msgstr "" -#: config/tc-tic54x.c:5548 +#: config/tc-tic54x.c:5472 #, c-format msgid "negative value ignored in %s" msgstr "" -#: config/tc-tic54x.c:5635 +#: config/tc-tic54x.c:5559 #, c-format msgid "attempt to .space/.bes backwards? (%ld)" msgstr "" -#: config/tc-tic54x.c:5668 +#: config/tc-tic54x.c:5592 #, c-format msgid "Invalid label '%s'" msgstr "" -#: config/tc-tic80.c:25 +#: config/tc-tic80.c:26 #, c-format msgid "internal error:%s:%d: %s\n" msgstr "" -#: config/tc-tic80.c:28 +#: config/tc-tic80.c:29 #, c-format msgid "internal error:%s:%d: %s %d\n" msgstr "" -#: config/tc-tic80.c:90 +#: config/tc-tic80.c:91 msgid "Relaxation is a luxury we can't afford" msgstr "" -#: config/tc-tic80.c:140 +#: config/tc-tic80.c:141 msgid "bad call to md_atof ()" msgstr "" -#: config/tc-tic80.c:238 +#: config/tc-tic80.c:239 msgid "':' not followed by 'm' or 's'" msgstr "" -#: config/tc-tic80.c:251 +#: config/tc-tic80.c:252 msgid "paren nesting" msgstr "" -#: config/tc-tic80.c:265 +#: config/tc-tic80.c:266 msgid "mismatched parenthesis" msgstr "" -#: config/tc-tic80.c:467 +#: config/tc-tic80.c:468 msgid "unhandled expression type" msgstr "" -#: config/tc-tic80.c:681 +#: config/tc-tic80.c:682 msgid "symbol reloc that is not PC relative or 32 bits" msgstr "" -#: config/tc-tic80.c:710 +#: config/tc-tic80.c:711 msgid "unhandled operand modifier" msgstr "" -#: config/tc-tic80.c:752 +#: config/tc-tic80.c:753 msgid "unhandled expression" msgstr "" -#: config/tc-tic80.c:801 +#: config/tc-tic80.c:802 #, c-format msgid "Invalid mnemonic: '%s'" msgstr "" -#: config/tc-tic80.c:814 +#: config/tc-tic80.c:815 #, c-format msgid "Invalid operands: '%s'" msgstr "" -#: config/tc-tic80.c:892 +#: config/tc-tic80.c:893 msgid "unhandled predefined symbol bits" msgstr "" -#: config/tc-tic80.c:984 +#: config/tc-tic80.c:987 #, c-format msgid "PC offset 0x%lx outside range 0x%lx-0x%lx" msgstr "" -#: config/tc-tic80.c:999 +#: config/tc-tic80.c:1002 msgid "unhandled relocation type in fixup" msgstr "" -#: config/tc-tic80.c:1035 +#: config/tc-tic80.c:1041 msgid "md_convert_frag() not implemented yet" msgstr "" -#: config/tc-v850.c:270 +#: config/tc-v850.c:271 #, c-format msgid ".COMMon length (%d.) < 0! Ignored." msgstr "" -#: config/tc-v850.c:1013 +#: config/tc-v850.c:320 +msgid "Common alignment negative; 0 assumed" +msgstr "" + +#: config/tc-v850.c:1014 #, c-format msgid "unknown operand shift: %x\n" msgstr "" -#: config/tc-v850.c:1014 +#: config/tc-v850.c:1015 msgid "internal failure in parse_register_list" msgstr "" -#: config/tc-v850.c:1031 +#: config/tc-v850.c:1032 msgid "constant expression or register list expected" msgstr "" -#: config/tc-v850.c:1036 config/tc-v850.c:1049 config/tc-v850.c:1068 +#: config/tc-v850.c:1037 config/tc-v850.c:1050 config/tc-v850.c:1069 msgid "high bits set in register list expression" msgstr "" -#: config/tc-v850.c:1108 config/tc-v850.c:1172 +#: config/tc-v850.c:1109 config/tc-v850.c:1173 msgid "illegal register included in list" msgstr "" -#: config/tc-v850.c:1115 +#: config/tc-v850.c:1116 msgid "system registers cannot be included in list" msgstr "" -#: config/tc-v850.c:1120 +#: config/tc-v850.c:1121 msgid "PSW cannot be included in list" msgstr "" -#: config/tc-v850.c:1127 +#: config/tc-v850.c:1128 msgid "High value system registers cannot be included in list" msgstr "" -#: config/tc-v850.c:1151 +#: config/tc-v850.c:1152 msgid "second register should follow dash in register list" msgstr "" -#: config/tc-v850.c:1198 +#: config/tc-v850.c:1199 msgid " V850 options:\n" msgstr "" -#: config/tc-v850.c:1199 +#: config/tc-v850.c:1200 msgid " -mwarn-signed-overflow Warn if signed immediate values overflow\n" msgstr "" -#: config/tc-v850.c:1200 +#: config/tc-v850.c:1201 msgid "" " -mwarn-unsigned-overflow Warn if unsigned immediate values overflow\n" msgstr "" -#: config/tc-v850.c:1201 +#: config/tc-v850.c:1202 msgid " -mv850 The code is targeted at the v850\n" msgstr "" -#: config/tc-v850.c:1202 +#: config/tc-v850.c:1203 msgid " -mv850e The code is targeted at the v850e\n" msgstr "" -#: config/tc-v850.c:1203 +#: config/tc-v850.c:1204 msgid " -mv850ea The code is targeted at the v850ea\n" msgstr "" -#: config/tc-v850.c:1204 +#: config/tc-v850.c:1205 msgid "" " -mv850any The code is generic, despite any processor " "specific instructions\n" msgstr "" -#: config/tc-v850.c:1216 config/tc-v850.c:1254 +#: config/tc-v850.c:1217 config/tc-v850.c:1255 #, c-format msgid "unknown command line option: -%c%s\n" msgstr "" -#: config/tc-v850.c:1407 +#: config/tc-v850.c:1405 #, c-format msgid "Unable to determine default target processor from string: %s" msgstr "" -#: config/tc-v850.c:1455 +#: config/tc-v850.c:1453 msgid "ctoff() relocation used on an instruction which does not support it" msgstr "" -#: config/tc-v850.c:1477 +#: config/tc-v850.c:1475 msgid "sdaoff() relocation used on an instruction which does not support it" msgstr "" -#: config/tc-v850.c:1499 +#: config/tc-v850.c:1497 msgid "zdaoff() relocation used on an instruction which does not support it" msgstr "" -#: config/tc-v850.c:1532 +#: config/tc-v850.c:1530 msgid "tdaoff() relocation used on an instruction which does not support it" msgstr "" -#: config/tc-v850.c:1749 +#: config/tc-v850.c:1746 msgid "Target processor does not support this instruction." msgstr "" -#: config/tc-v850.c:1839 config/tc-v850.c:1869 config/tc-v850.c:2057 +#: config/tc-v850.c:1836 config/tc-v850.c:1866 config/tc-v850.c:2054 msgid "immediate operand is too large" msgstr "" -#: config/tc-v850.c:1851 +#: config/tc-v850.c:1848 msgid "AAARG -> unhandled constant reloc" msgstr "" -#: config/tc-v850.c:1895 +#: config/tc-v850.c:1892 msgid "invalid register name" msgstr "" -#: config/tc-v850.c:1900 +#: config/tc-v850.c:1897 msgid "register r0 cannot be used here" msgstr "" -#: config/tc-v850.c:1912 +#: config/tc-v850.c:1909 msgid "invalid system register name" msgstr "" -#: config/tc-v850.c:1925 +#: config/tc-v850.c:1922 msgid "expected EP register" msgstr "" -#: config/tc-v850.c:1942 +#: config/tc-v850.c:1939 msgid "invalid condition code name" msgstr "" -#: config/tc-v850.c:1963 config/tc-v850.c:1967 +#: config/tc-v850.c:1960 config/tc-v850.c:1964 msgid "constant too big to fit into instruction" msgstr "" -#: config/tc-v850.c:2020 +#: config/tc-v850.c:2017 msgid "syntax error: value is missing before the register name" msgstr "" -#: config/tc-v850.c:2022 +#: config/tc-v850.c:2019 msgid "syntax error: register not expected" msgstr "" -#: config/tc-v850.c:2036 +#: config/tc-v850.c:2033 msgid "syntax error: system register not expected" msgstr "" -#: config/tc-v850.c:2041 +#: config/tc-v850.c:2038 msgid "syntax error: condition code not expected" msgstr "" -#: config/tc-v850.c:2082 +#: config/tc-v850.c:2079 msgid "invalid operand" msgstr "" -#: config/tc-vax.c:259 +#: config/tc-vax.c:267 #, c-format msgid "VIP_BEGIN error:%s" msgstr "" -#: config/tc-vax.c:383 +#: config/tc-vax.c:397 #, c-format msgid "Ignoring statement because \"%s\"" msgstr "" -#: config/tc-vax.c:430 +#: config/tc-vax.c:444 msgid "Can't relocate expression" msgstr "" -#: config/tc-vax.c:533 +#: config/tc-vax.c:547 msgid "Bignum not permitted in short literal. Immediate mode assumed." msgstr "" -#: config/tc-vax.c:542 +#: config/tc-vax.c:556 msgid "Can't do flonum short literal: immediate mode used." msgstr "" -#: config/tc-vax.c:587 +#: config/tc-vax.c:601 #, c-format msgid "A bignum/flonum may not be a displacement: 0x%lx used" msgstr "" -#: config/tc-vax.c:908 +#: config/tc-vax.c:922 #, c-format msgid "Short literal overflow(%ld.), immediate mode assumed." msgstr "" -#: config/tc-vax.c:917 +#: config/tc-vax.c:931 #, c-format msgid "Forced short literal to immediate mode. now_seg=%s to_seg=%s" msgstr "" -#: config/tc-vax.c:976 +#: config/tc-vax.c:990 msgid "Length specification ignored. Address mode 9F used" msgstr "" -#: config/tc-vax.c:1025 +#: config/tc-vax.c:1039 msgid "Invalid operand: immediate value used as base address." msgstr "" -#: config/tc-vax.c:1027 +#: config/tc-vax.c:1041 msgid "Invalid operand: immediate value used as address." msgstr "" -#: config/tc-vax.c:1818 +#: config/tc-vax.c:1814 msgid "odd number of bytes in operand description" msgstr "" -#: config/tc-vax.c:1834 +#: config/tc-vax.c:1830 msgid "Bad operand" msgstr "" -#: config/tc-vax.c:2390 +#: config/tc-vax.c:2383 msgid "no '[' to match ']'" msgstr "" -#: config/tc-vax.c:2408 +#: config/tc-vax.c:2401 msgid "bad register in []" msgstr "" -#: config/tc-vax.c:2410 +#: config/tc-vax.c:2403 msgid "[PC] index banned" msgstr "" -#: config/tc-vax.c:2445 +#: config/tc-vax.c:2438 msgid "no '(' to match ')'" msgstr "" -#: config/tc-vax.c:2580 +#: config/tc-vax.c:2573 msgid "invalid branch operand" msgstr "" -#: config/tc-vax.c:2609 +#: config/tc-vax.c:2602 msgid "address prohibits @" msgstr "" -#: config/tc-vax.c:2611 +#: config/tc-vax.c:2604 msgid "address prohibits #" msgstr "" -#: config/tc-vax.c:2615 +#: config/tc-vax.c:2608 msgid "address prohibits -()" msgstr "" -#: config/tc-vax.c:2617 +#: config/tc-vax.c:2610 msgid "address prohibits ()+" msgstr "" -#: config/tc-vax.c:2620 +#: config/tc-vax.c:2613 msgid "address prohibits ()" msgstr "" -#: config/tc-vax.c:2622 +#: config/tc-vax.c:2615 msgid "address prohibits []" msgstr "" -#: config/tc-vax.c:2624 +#: config/tc-vax.c:2617 msgid "address prohibits register" msgstr "" -#: config/tc-vax.c:2626 +#: config/tc-vax.c:2619 msgid "address prohibits displacement length specifier" msgstr "" -#: config/tc-vax.c:2656 +#: config/tc-vax.c:2649 msgid "invalid operand of S^#" msgstr "" -#: config/tc-vax.c:2673 +#: config/tc-vax.c:2666 msgid "S^# needs expression" msgstr "" -#: config/tc-vax.c:2680 +#: config/tc-vax.c:2673 msgid "S^# may only read-access" msgstr "" -#: config/tc-vax.c:2705 +#: config/tc-vax.c:2698 msgid "invalid operand of -()" msgstr "" -#: config/tc-vax.c:2711 +#: config/tc-vax.c:2704 msgid "-(PC) unpredictable" msgstr "" -#: config/tc-vax.c:2713 +#: config/tc-vax.c:2706 msgid "[]index same as -()register: unpredictable" msgstr "" -#: config/tc-vax.c:2749 +#: config/tc-vax.c:2742 msgid "invalid operand of ()+" msgstr "" -#: config/tc-vax.c:2755 +#: config/tc-vax.c:2748 msgid "(PC)+ unpredictable" msgstr "" -#: config/tc-vax.c:2757 +#: config/tc-vax.c:2750 msgid "[]index same as ()+register: unpredictable" msgstr "" -#: config/tc-vax.c:2782 +#: config/tc-vax.c:2775 msgid "# conflicts length" msgstr "" -#: config/tc-vax.c:2784 +#: config/tc-vax.c:2777 msgid "# bars register" msgstr "" -#: config/tc-vax.c:2806 +#: config/tc-vax.c:2799 msgid "writing or modifying # is unpredictable" msgstr "" -#: config/tc-vax.c:2836 +#: config/tc-vax.c:2829 msgid "length not needed" msgstr "" -#: config/tc-vax.c:2843 +#: config/tc-vax.c:2836 msgid "can't []index a register, because it has no address" msgstr "" -#: config/tc-vax.c:2845 +#: config/tc-vax.c:2838 msgid "a register has no address" msgstr "" -#: config/tc-vax.c:2856 +#: config/tc-vax.c:2849 msgid "PC part of operand unpredictable" msgstr "" -#: config/tc-vax.c:3185 +#: config/tc-vax.c:3178 msgid "" "VAX options:\n" "-d LENGTH\t\tignored\n" @@ -7788,7 +8502,7 @@ msgid "" "-V\t\t\tignored\n" msgstr "" -#: config/tc-vax.c:3194 +#: config/tc-vax.c:3187 msgid "" "VMS options:\n" "-+\t\t\thash encode names longer than 31 characters\n" @@ -7799,50 +8513,54 @@ msgid "" "-v\"VERSION\"\t\tcode being assembled was produced by compiler \"VERSION\"\n" msgstr "" -#: config/tc-w65.c:127 +#: config/tc-w65.c:144 msgid "need on or off." msgstr "" -#: config/tc-w65.c:311 config/tc-w65.c:354 +#: config/tc-w65.c:304 config/tc-w65.c:347 msgid "syntax error after <exp" msgstr "" -#: config/tc-z8k.c:286 +#: config/tc-w65.c:855 +msgid "call to tc_Nout_fix_to_chars \n" +msgstr "" + +#: config/tc-z8k.c:285 #, c-format msgid "register rr%d, out of range." msgstr "" -#: config/tc-z8k.c:294 +#: config/tc-z8k.c:295 #, c-format msgid "register rh%d, out of range." msgstr "" -#: config/tc-z8k.c:302 +#: config/tc-z8k.c:305 #, c-format msgid "register rl%d, out of range." msgstr "" -#: config/tc-z8k.c:311 +#: config/tc-z8k.c:316 #, c-format msgid "register rq%d, out of range." msgstr "" -#: config/tc-z8k.c:319 +#: config/tc-z8k.c:326 #, c-format msgid "register r%d, out of range." msgstr "" -#: config/tc-z8k.c:364 +#: config/tc-z8k.c:371 #, c-format msgid "expected %c" msgstr "" -#: config/tc-z8k.c:381 +#: config/tc-z8k.c:388 #, c-format msgid "register is wrong size for a word %s" msgstr "" -#: config/tc-z8k.c:397 +#: config/tc-z8k.c:404 #, c-format msgid "register is wrong size for address %s" msgstr "" @@ -7856,194 +8574,194 @@ msgstr "" msgid "operand %s0x%x out of range." msgstr "" -#: config/tc-z8k.c:1070 +#: config/tc-z8k.c:1060 msgid "immediate must be 1 or 2" msgstr "" -#: config/tc-z8k.c:1073 +#: config/tc-z8k.c:1063 msgid "immediate 1 or 2 expected" msgstr "" -#: config/tc-z8k.c:1099 +#: config/tc-z8k.c:1089 msgid "can't use R0 here" msgstr "" -#: config/tc-z8k.c:1246 +#: config/tc-z8k.c:1243 msgid "Can't find opcode to match operands" msgstr "" -#: config/tc-z8k.c:1361 +#: config/tc-z8k.c:1358 #, c-format msgid "invalid architecture -z%s" msgstr "" -#: config/tc-z8k.c:1377 +#: config/tc-z8k.c:1374 msgid "" "Z8K options:\n" "-z8001\t\t\tgenerate segmented code\n" "-z8002\t\t\tgenerate unsegmented code\n" msgstr "" -#: config/tc-z8k.c:1521 +#: config/tc-z8k.c:1523 #, c-format msgid "Can't subtract symbols in different sections %s %s" msgstr "" -#: depend.c:196 +#: depend.c:200 #, c-format -msgid "Can't open `%s' for writing" +msgid "can't open `%s' for writing" msgstr "" -#: depend.c:208 +#: depend.c:212 #, c-format -msgid "Can't close `%s'" +msgid "can't close `%s'" +msgstr "" + +#: dwarf2dbg.c:353 dwarf2dbg.c:395 +msgid "file number less than one" msgstr "" -#: dwarf2dbg.c:345 dwarf2dbg.c:379 -msgid "File number less than zero" +#: dwarf2dbg.c:359 +#, c-format +msgid "file number %ld already allocated" msgstr "" -#: dwarf2dbg.c:385 +#: dwarf2dbg.c:400 dwarf2dbg.c:946 #, c-format -msgid "Unassigned file number %ld" +msgid "unassigned file number %ld" msgstr "" -#: dwarf2dbg.c:1255 dwarf2dbg.c:1263 dwarf2dbg.c:1271 dwarf2dbg.c:1284 -#: dwarf2dbg.c:1291 +#: dwarf2dbg.c:1284 dwarf2dbg.c:1292 dwarf2dbg.c:1300 dwarf2dbg.c:1320 msgid "dwarf2 is not supported for this object file format" msgstr "" -#: ecoff.c:1555 +#: ecoff.c:1556 #, c-format -msgid "String too big (%lu bytes)" +msgid "string too big (%lu bytes)" msgstr "" -#: ecoff.c:1581 +#: ecoff.c:1582 #, c-format -msgid "Inserting \"%s\" into string hash table: %s" +msgid "inserting \"%s\" into string hash table: %s" msgstr "" -#: ecoff.c:1613 ecoff.c:1807 ecoff.c:1832 ecoff.c:1864 ecoff.c:2018 -#: ecoff.c:2132 +#: ecoff.c:1614 ecoff.c:1808 ecoff.c:1833 ecoff.c:1865 ecoff.c:2019 +#: ecoff.c:2133 msgid "no current file pointer" msgstr "" -#: ecoff.c:1700 +#: ecoff.c:1701 msgid "too many st_End's" msgstr "" -#: ecoff.c:2044 +#: ecoff.c:2045 #, c-format -msgid "Inserting \"%s\" into tag hash table: %s" +msgid "inserting \"%s\" into tag hash table: %s" msgstr "" -#: ecoff.c:2210 +#: ecoff.c:2211 msgid "fake .file after real one" msgstr "" -#: ecoff.c:2300 -msgid "Filename goes over one page boundary." +#: ecoff.c:2301 +msgid "filename goes over one page boundary" msgstr "" -#: ecoff.c:2435 +#: ecoff.c:2436 msgid ".begin directive without a preceding .file directive" msgstr "" -#: ecoff.c:2442 +#: ecoff.c:2443 msgid ".begin directive without a preceding .ent directive" msgstr "" -#: ecoff.c:2474 +#: ecoff.c:2475 msgid ".bend directive without a preceding .file directive" msgstr "" -#: ecoff.c:2481 +#: ecoff.c:2482 msgid ".bend directive without a preceding .ent directive" msgstr "" -#: ecoff.c:2494 +#: ecoff.c:2495 msgid ".bend directive names unknown symbol" msgstr "" -#: ecoff.c:2538 +#: ecoff.c:2539 msgid ".def pseudo-op used inside of .def/.endef; ignored" msgstr "" -#: ecoff.c:2540 -msgid "Empty symbol name in .def; ignored" +#: ecoff.c:2541 +msgid "empty symbol name in .def; ignored" msgstr "" -#: ecoff.c:2578 +#: ecoff.c:2579 msgid ".dim pseudo-op used outside of .def/.endef; ignored" msgstr "" -#: ecoff.c:2593 -msgid "Badly formed .dim directive" +#: ecoff.c:2594 +msgid "badly formed .dim directive" msgstr "" -#: ecoff.c:2606 -msgid "Too many .dim entries" +#: ecoff.c:2607 +msgid "too many .dim entries" msgstr "" -#: ecoff.c:2627 +#: ecoff.c:2628 msgid ".scl pseudo-op used outside of .def/.endef; ignored" msgstr "" -#: ecoff.c:2653 +#: ecoff.c:2654 msgid ".size pseudo-op used outside of .def/.endef; ignored" msgstr "" -#: ecoff.c:2668 -msgid "Badly formed .size directive" +#: ecoff.c:2669 +msgid "badly formed .size directive" msgstr "" -#: ecoff.c:2681 -msgid "Too many .size entries" +#: ecoff.c:2682 +msgid "too many .size entries" msgstr "" -#: ecoff.c:2704 +#: ecoff.c:2705 msgid ".type pseudo-op used outside of .def/.endef; ignored" msgstr "" #. FIXME: We could handle this by setting the continued bit. #. There would still be a limit: the .type argument can not #. be infinite. -#: ecoff.c:2722 +#: ecoff.c:2723 #, c-format -msgid "The type of %s is too complex; it will be simplified" +msgid "the type of %s is too complex; it will be simplified" msgstr "" -#: ecoff.c:2733 +#: ecoff.c:2734 msgid "Unrecognized .type argument" msgstr "" -#: ecoff.c:2772 +#: ecoff.c:2773 msgid ".tag pseudo-op used outside of .def/.endef; ignored" msgstr "" -#: ecoff.c:2799 +#: ecoff.c:2800 msgid ".val pseudo-op used outside of .def/.endef; ignored" msgstr "" -#: ecoff.c:2807 +#: ecoff.c:2808 msgid ".val expression is too copmlex" msgstr "" -#: ecoff.c:2838 +#: ecoff.c:2839 msgid ".endef pseudo-op used before .def; ignored" msgstr "" -#: ecoff.c:2864 -msgid "Bad COFF debugging info" +#: ecoff.c:2865 ecoff.c:2946 +msgid "bad COFF debugging information" msgstr "" -#: ecoff.c:2913 +#: ecoff.c:2914 #, c-format -msgid "No tag specified for %s" -msgstr "" - -#: ecoff.c:2945 -msgid "Bad COFF debugging information" +msgid "no tag specified for %s" msgstr "" #: ecoff.c:3017 @@ -8054,114 +8772,128 @@ msgstr "" msgid ".end directive without a preceding .ent directive" msgstr "" -#: ecoff.c:3047 +#: ecoff.c:3046 msgid ".end directive names unknown symbol" msgstr "" -#: ecoff.c:3076 +#: ecoff.c:3074 msgid "second .ent directive found before .end directive" msgstr "" -#: ecoff.c:3151 -msgid "No way to handle .file within .ent/.end section" +#: ecoff.c:3148 +msgid "no way to handle .file within .ent/.end section" msgstr "" -#: ecoff.c:3176 +#: ecoff.c:3173 msgid ".fmask outside of .ent" msgstr "" -#: ecoff.c:3246 +#: ecoff.c:3180 +msgid "bad .fmask directive" +msgstr "" + +#: ecoff.c:3213 +msgid "bad .frame directive" +msgstr "" + +#: ecoff.c:3243 msgid ".mask outside of .ent" msgstr "" -#: ecoff.c:3276 -msgid ".loc before .file" +#: ecoff.c:3250 +msgid "bad .mask directive" msgstr "" -#: ecoff.c:3402 -#, c-format -msgid "Ignoring attempt to redefine symbol `%s'." +#: ecoff.c:3273 +msgid ".loc before .file" msgstr "" -#: ecoff.c:3415 +#: ecoff.c:3412 msgid "bad .weakext directive" msgstr "" -#: ecoff.c:3484 +#: ecoff.c:3481 #, c-format msgid ".stab%c is not supported" msgstr "" -#: ecoff.c:3494 +#: ecoff.c:3491 #, c-format msgid ".stab%c: ignoring non-zero other field" msgstr "" -#: ecoff.c:3528 +#: ecoff.c:3525 #, c-format msgid "" -"Line number (%d) for .stab%c directive cannot fit in index field (20 bits)" +"line number (%d) for .stab%c directive cannot fit in index field (20 bits)" msgstr "" -#: ecoff.c:3564 +#: ecoff.c:3561 #, c-format -msgid "Illegal .stab%c directive, bad character" +msgid "illegal .stab%c directive, bad character" msgstr "" -#: ecoff.c:4026 ecoff.c:4215 ecoff.c:4240 +#: ecoff.c:4023 ecoff.c:4212 ecoff.c:4237 msgid ".begin/.bend in different segments" msgstr "" -#: ecoff.c:4741 -msgid "Missing .end or .bend at end of file" +#: ecoff.c:4739 +msgid "missing .end or .bend at end of file" msgstr "" -#: ecoff.c:5231 +#: ecoff.c:5229 msgid "GP prologue size exceeds field size, using 0 instead" msgstr "" -#: expr.c:245 -msgid "" -"bad floating-point constant: exponent overflow, probably assembling junk" +#: expr.c:84 read.c:3225 +msgid "bignum invalid" +msgstr "" + +#: expr.c:86 read.c:3227 read.c:3560 read.c:4459 +msgid "floating point number invalid" +msgstr "" + +#: expr.c:246 +msgid "bad floating-point constant: exponent overflow" msgstr "" -#: expr.c:249 +#: expr.c:250 #, c-format -msgid "bad floating-point constant: unknown error code=%d." +msgid "bad floating-point constant: unknown error code=%d" msgstr "" -#: expr.c:429 +#: expr.c:428 msgid "" -"A bignum with underscores may not have more than 8 hex digits in any word." +"a bignum with underscores may not have more than 8 hex digits in any word" msgstr "" -#: expr.c:452 -msgid "A bignum with underscores must have exactly 4 words." +#: expr.c:451 +msgid "a bignum with underscores must have exactly 4 words" msgstr "" #. Either not seen or not defined. #. @@ Should print out the original string instead of #. the parsed number. -#: expr.c:575 +#: expr.c:574 #, c-format -msgid "backw. ref to unknown label \"%d:\", 0 assumed." +msgid "backward ref to unknown label \"%d:\"" msgstr "" -#: expr.c:698 -msgid "Character constant too large" +#: expr.c:697 +msgid "character constant too large" msgstr "" -#: expr.c:949 +#: expr.c:950 #, c-format msgid "expr.c(operand): bad atof_generic return val %d" msgstr "" #: expr.c:1012 #, c-format -msgid "Missing '%c' assumed" +msgid "missing '%c'" msgstr "" -#: expr.c:1024 read.c:3869 +#: expr.c:1024 read.c:3930 msgid "EBCDIC constants are not supported" msgstr "" @@ -8174,48 +8906,44 @@ msgstr "" msgid "syntax error in .startof. or .sizeof." msgstr "" -#: expr.c:1314 -msgid "Bad expression" -msgstr "" - -#: expr.c:1674 +#: expr.c:1677 msgid "missing operand; zero assumed" msgstr "" -#: expr.c:1707 -msgid "operation combines symbols in different segments" -msgstr "" - -#: expr.c:1724 +#: expr.c:1712 msgid "left operand is a bignum; integer 0 assumed" msgstr "" -#: expr.c:1726 +#: expr.c:1714 msgid "left operand is a float; integer 0 assumed" msgstr "" -#: expr.c:1735 +#: expr.c:1723 msgid "right operand is a bignum; integer 0 assumed" msgstr "" -#: expr.c:1737 +#: expr.c:1725 msgid "right operand is a float; integer 0 assumed" msgstr "" -#: expr.c:1793 symbols.c:1089 +#: expr.c:1780 symbols.c:1121 msgid "division by zero" msgstr "" -#: frags.c:86 +#: expr.c:1878 +msgid "operation combines symbols in different segments" +msgstr "" + +#: frags.c:87 #, c-format -msgid "Can't extend frag %d. chars" +msgid "can't extend frag %u chars" msgstr "" -#: frags.c:167 +#: frags.c:168 msgid "attempt to allocate data in absolute section" msgstr "" -#: frags.c:173 +#: frags.c:174 msgid "attempt to allocate data in common section" msgstr "" @@ -8304,188 +9032,188 @@ msgid "form COL= needs absolute expresssion.\n" msgstr "" #. Turns the next expression into a string. -#: gasp.c:1552 macro.c:387 -#, c-format +#: gasp.c:1553 macro.c:382 +#, no-c-format msgid "% operator needs absolute expression" msgstr "" -#: gasp.c:1614 +#: gasp.c:1615 msgid "misplaced ( .\n" msgstr "" -#: gasp.c:1629 +#: gasp.c:1630 msgid "misplaced ).\n" msgstr "" -#: gasp.c:1681 +#: gasp.c:1682 msgid ".instr needs absolute expresson.\n" msgstr "" -#: gasp.c:1718 +#: gasp.c:1719 msgid "need absolute position.\n" msgstr "" -#: gasp.c:1720 +#: gasp.c:1721 msgid "need absolute length.\n" msgstr "" -#: gasp.c:1966 +#: gasp.c:1967 msgid "END missing from end of file.\n" msgstr "" -#: gasp.c:1992 +#: gasp.c:1993 msgid ".ASSIGNA needs constant expression argument.\n" msgstr "" -#: gasp.c:1996 +#: gasp.c:1997 msgid ".ASSIGNA without label.\n" msgstr "" -#: gasp.c:2021 +#: gasp.c:2022 msgid ".ASSIGNS without label.\n" msgstr "" -#: gasp.c:2085 +#: gasp.c:2086 #, c-format msgid "Can't find preprocessor variable %s.\n" msgstr "" -#: gasp.c:2150 +#: gasp.c:2151 msgid "Comparison operator must be one of EQ, NE, LT, LE, GT or GE.\n" msgstr "" -#: gasp.c:2185 +#: gasp.c:2186 msgid "Comparison operator for strings must be EQ or NE\n" msgstr "" -#: gasp.c:2197 gasp.c:2207 gasp.c:2310 +#: gasp.c:2198 gasp.c:2208 gasp.c:2311 msgid "Conditional operator must have absolute operands.\n" msgstr "" -#: gasp.c:2202 +#: gasp.c:2203 msgid "String compared against expression.\n" msgstr "" -#: gasp.c:2253 +#: gasp.c:2254 msgid "AIF nesting unreasonable.\n" msgstr "" -#: gasp.c:2268 +#: gasp.c:2269 msgid "Multiple AELSEs in AIF.\n" msgstr "" -#: gasp.c:2284 +#: gasp.c:2285 msgid "AENDI without AIF.\n" msgstr "" -#: gasp.c:2307 gasp.c:2389 +#: gasp.c:2308 gasp.c:2390 msgid "IF nesting unreasonable.\n" msgstr "" -#: gasp.c:2399 +#: gasp.c:2400 msgid "Bad format for IF or IFNC.\n" msgstr "" -#: gasp.c:2420 +#: gasp.c:2421 msgid "AENDR without a AREPEAT.\n" msgstr "" -#: gasp.c:2422 +#: gasp.c:2423 msgid "ENDR without a REPT.\n" msgstr "" -#: gasp.c:2444 +#: gasp.c:2445 #, c-format msgid "AWHILE without a AENDW at %d.\n" msgstr "" -#: gasp.c:2481 +#: gasp.c:2482 msgid "AENDW without a AENDW.\n" msgstr "" -#: gasp.c:2525 +#: gasp.c:2526 msgid "AREPEAT must have absolute operand.\n" msgstr "" -#: gasp.c:2531 +#: gasp.c:2532 #, c-format msgid "AREPEAT without a AENDR at %d.\n" msgstr "" -#: gasp.c:2573 +#: gasp.c:2574 msgid ".ENDM without a matching .MACRO.\n" msgstr "" -#: gasp.c:2607 +#: gasp.c:2608 msgid "LOCAL outside of MACRO" msgstr "" -#: gasp.c:2620 +#: gasp.c:2621 #, c-format msgid "macro at line %d: %s\n" msgstr "" -#: gasp.c:2643 +#: gasp.c:2644 msgid "macro expansion" msgstr "" -#: gasp.c:2697 +#: gasp.c:2698 msgid "Character code in string must be absolute expression.\n" msgstr "" -#: gasp.c:2702 +#: gasp.c:2703 msgid "Missing > for character code.\n" msgstr "" -#: gasp.c:2761 +#: gasp.c:2762 #, c-format msgid "string for SDATAC longer than 255 characters (%d).\n" msgstr "" -#: gasp.c:2790 +#: gasp.c:2791 #, c-format msgid "illegal character in SDATA line (0x%x).\n" msgstr "" -#: gasp.c:2812 +#: gasp.c:2813 msgid "Must have absolute SDATAB repeat count.\n" msgstr "" -#: gasp.c:2815 +#: gasp.c:2816 #, c-format msgid "Must have positive SDATAB repeat count (%d).\n" msgstr "" -#: gasp.c:2843 +#: gasp.c:2844 #, c-format msgid "Unreasonable include depth (%ld).\n" msgstr "" -#: gasp.c:2897 +#: gasp.c:2898 #, c-format msgid "Can't open include file `%s'.\n" msgstr "" -#: gasp.c:2971 +#: gasp.c:2972 msgid "Unreasonable expansion (-u turns off check).\n" msgstr "" #. This one causes lots of pain when trying to preprocess #. ordinary code. -#: gasp.c:3185 +#: gasp.c:3186 #, c-format msgid "Unrecognised pseudo op `%s'.\n" msgstr "" -#: gasp.c:3254 +#: gasp.c:3255 msgid "ORG command not allowed.\n" msgstr "" -#: gasp.c:3467 +#: gasp.c:3468 msgid "Invalid expression on command line.\n" msgstr "" -#: gasp.c:3510 +#: gasp.c:3511 #, c-format msgid "" "Usage: %s \n" @@ -8498,7 +9226,7 @@ msgid "" " [-p] [--print] print line numbers\n" msgstr "" -#: gasp.c:3519 +#: gasp.c:3520 msgid "" " [-s] [--copysource] copy source through as comments \n" " [-u] [--unreasonable] allow unreasonable nesting\n" @@ -8509,37 +9237,37 @@ msgid "" " [in-file]\n" msgstr "" -#: gasp.c:3536 +#: gasp.c:3537 #, c-format msgid "%s: Gnu Assembler Macro Preprocessor\n" msgstr "" #. This output is intended to follow the GNU standards document. -#: gasp.c:3619 +#: gasp.c:3625 #, c-format msgid "GNU assembler pre-processor %s\n" msgstr "" -#: gasp.c:3620 +#: gasp.c:3626 msgid "Copyright 1996 Free Software Foundation, Inc.\n" msgstr "" -#: gasp.c:3643 +#: gasp.c:3649 #, c-format msgid "%s: Can't open output file `%s'.\n" msgstr "" -#: gasp.c:3667 +#: gasp.c:3673 #, c-format msgid "%s: Can't open input file `%s'.\n" msgstr "" -#: gasp.c:3686 +#: gasp.c:3692 #, c-format msgid "Internal error, aborting at %s line %d" msgstr "" -#: gasp.c:3689 +#: gasp.c:3695 msgid "" "\n" "Please report this bug.\n" @@ -8556,38 +9284,34 @@ msgstr "" #. line here (assuming of course that we actually have a line of #. input to read), so that it can be displayed in the listing #. that is produced at the end of the assembly. -#: input-file.c:149 input-scrub.c:241 listing.c:344 +#: input-file.c:145 input-scrub.c:242 listing.c:344 msgid "{standard input}" msgstr "" -#: input-file.c:153 +#: input-file.c:149 #, c-format -msgid "Can't open %s for reading." +msgid "can't open %s for reading" msgstr "" -#: input-file.c:204 input-file.c:233 +#: input-file.c:212 input-file.c:239 #, c-format msgid "Can't read from %s" msgstr "" -#: input-file.c:241 +#: input-file.c:247 #, c-format msgid "Can't close %s" msgstr "" -#: input-scrub.c:271 +#: input-scrub.c:272 msgid "macros nested too deeply" msgstr "" -#: input-scrub.c:374 +#: input-scrub.c:375 input-scrub.c:397 msgid "partial line at end of file ignored" msgstr "" -#: input-scrub.c:396 -msgid "Partial line at end of file ignored" -msgstr "" - -#: itbl-ops.c:350 +#: itbl-ops.c:351 msgid "Unable to allocate memory for new instructions\n" msgstr "" @@ -8599,49 +9323,49 @@ msgstr "" msgid "Error:" msgstr "" -#: listing.c:1125 +#: listing.c:1131 #, c-format msgid "can't open list file: %s" msgstr "" -#: listing.c:1149 +#: listing.c:1155 #, c-format msgid "error closing list file: %s" msgstr "" -#: listing.c:1228 +#: listing.c:1234 msgid "strange paper height, set to no form" msgstr "" -#: listing.c:1294 -msgid "New line in title" +#: listing.c:1300 +msgid "new line in title" msgstr "" -#: macro.c:550 +#: macro.c:545 msgid "unexpected end of file in macro definition" msgstr "" -#: macro.c:559 +#: macro.c:554 msgid "missing ) after formals" msgstr "" -#: macro.c:716 +#: macro.c:710 msgid "missplaced )" msgstr "" -#: macro.c:978 +#: macro.c:979 msgid "confusion in formal parameters" msgstr "" -#: macro.c:983 +#: macro.c:984 msgid "macro formal argument does not exist" msgstr "" -#: macro.c:998 +#: macro.c:999 msgid "can't mix positional and keyword arguments" msgstr "" -#: macro.c:1006 +#: macro.c:1007 msgid "too many positional arguments" msgstr "" @@ -8665,59 +9389,64 @@ msgstr "" msgid "Error: " msgstr "" -#: messages.c:413 messages.c:429 +#: messages.c:413 messages.c:433 msgid "Fatal error: " msgstr "" -#: messages.c:446 +#: messages.c:450 msgid "Internal error!\n" msgstr "" -#: messages.c:448 +#: messages.c:452 #, c-format msgid "Assertion failure in %s at %s line %d.\n" msgstr "" -#: messages.c:451 +#: messages.c:455 #, c-format msgid "Assertion failure at %s line %d.\n" msgstr "" -#: messages.c:452 messages.c:471 +#: messages.c:456 messages.c:475 msgid "Please report this bug.\n" msgstr "" -#: messages.c:466 +#: messages.c:470 #, c-format msgid "Internal error, aborting at %s line %d in %s\n" msgstr "" -#: messages.c:469 +#: messages.c:473 #, c-format msgid "Internal error, aborting at %s line %d\n" msgstr "" #: output-file.c:48 #, c-format -msgid "Can't open a bfd on stdout %s " +msgid "can't open a bfd on stdout %s" msgstr "" -#: output-file.c:72 output-file.c:79 +#: output-file.c:52 output-file.c:115 #, c-format -msgid "FATAL: Can't close %s\n" +msgid "FATAL: can't create %s" msgstr "" -#: output-file.c:130 +#: output-file.c:73 output-file.c:80 #, c-format -msgid "FATAL: Can't close %s" +msgid "FATAL: can't close %s\n" msgstr "" -#: output-file.c:148 +#: output-file.c:126 +#, c-format +msgid "FATAL: can't close %s" +msgstr "" + +#: output-file.c:147 msgid "Failed to emit an object byte" msgstr "" -#: output-file.c:149 -msgid "Can't continue" +#: output-file.c:148 +msgid "can't continue" msgstr "" #: read.c:445 @@ -8725,463 +9454,514 @@ msgstr "" msgid "error constructing %s pseudo-op table: %s" msgstr "" -#: read.c:802 +#: read.c:801 #, c-format -msgid "Unknown pseudo-op: `%s'" +msgid "unknown pseudo-op: `%s'" msgstr "" -#: read.c:934 +#: read.c:932 #, c-format msgid "label \"%d$\" redefined" msgstr "" -#: read.c:1152 +#: read.c:1150 msgid ".abort detected. Abandoning ship." msgstr "" -#: read.c:1238 read.c:2027 -msgid "Alignment not a power of 2" +#: read.c:1172 read.c:2406 +msgid "ignoring fill value in absolute section" msgstr "" -#: read.c:1247 +#: read.c:1258 #, c-format -msgid "Alignment too large: %u assumed" +msgid "alignment too large: %u assumed" msgstr "" -#: read.c:1279 +#: read.c:1290 msgid "expected fill pattern missing" msgstr "" -#: read.c:1483 +#: read.c:1368 read.c:1968 read.c:2176 read.c:2788 +msgid "expected symbol name" +msgstr "" + +#: read.c:1378 read.c:2186 read.c:2798 stabs.c:472 +#, c-format +msgid "expected comma after \"%s\"" +msgstr "" + +#: read.c:1390 +#, c-format +msgid ".COMMon length (%ld) < 0 ignored" +msgstr "" + +#: read.c:1414 #, c-format -msgid "attempt to re-define symbol `%s'" +msgid "length of .comm \"%s\" is already %ld; not changing to %ld" msgstr "" #. Some of the back ends can't deal with non-positive line numbers. #. Besides, it's silly. -#: read.c:1607 +#: read.c:1628 #, c-format -msgid "Line numbers must be positive; line number %d rejected." +msgid "line numbers must be positive; line number %d rejected" msgstr "" -#: read.c:1635 +#: read.c:1656 msgid "start address not supported" msgstr "" -#: read.c:1645 +#: read.c:1666 msgid ".err encountered" msgstr "" -#: read.c:1664 read.c:1666 +#: read.c:1685 read.c:1687 #, c-format msgid ".fail %ld encountered" msgstr "" -#: read.c:1703 +#: read.c:1724 #, c-format -msgid ".fill size clamped to %d." +msgid ".fill size clamped to %d" msgstr "" -#: read.c:1708 -msgid "Size negative: .fill ignored." +#: read.c:1729 +msgid "size negative; .fill ignored" msgstr "" -#: read.c:1714 -msgid "Repeat < 0, .fill ignored" +#: read.c:1735 +msgid "repeat < 0; .fill ignored" msgstr "" -#: read.c:1874 +#: read.c:1895 #, c-format msgid "unrecognized .linkonce type `%s'" msgstr "" -#: read.c:1887 read.c:1913 +#: read.c:1908 read.c:1934 msgid ".linkonce is not supported for this object file format" msgstr "" -#: read.c:1909 +#: read.c:1930 #, c-format msgid "bfd_set_section_flags: %s" msgstr "" -#: read.c:1978 +#: read.c:1985 +msgid "missing size expression" +msgstr "" + +#: read.c:1991 +#, c-format +msgid "BSS length (%d) < 0 ignored" +msgstr "" + +#: read.c:2007 #, c-format msgid "error setting flags for \".sbss\": %s" msgstr "" -#: read.c:2001 -msgid "Expected comma after size" +#: read.c:2030 +msgid "expected comma after size" msgstr "" -#: read.c:2011 -msgid "Missing alignment" +#: read.c:2064 +#, c-format +msgid "alignment too large; %d assumed" msgstr "" -#: read.c:2162 -msgid "bad expression" +#: read.c:2069 +msgid "alignment negative; 0 assumed" msgstr "" -#: read.c:2299 +#: read.c:2335 #, c-format msgid "attempt to redefine pseudo-op `%s' ignored" msgstr "" -#: read.c:2365 +#: read.c:2401 #, c-format -msgid "invalid segment \"%s\"; segment \"%s\" assumed" -msgstr "" - -#: read.c:2371 -msgid "ignoring fill value in absolute section" +msgid "invalid segment \"%s\"" msgstr "" -#: read.c:2374 +#: read.c:2409 msgid "only constant offsets supported in absolute section" msgstr "" -#: read.c:2406 +#: read.c:2449 msgid "MRI style ORG pseudo-op not supported" msgstr "" -#: read.c:2495 -msgid "unrecognized section type" -msgstr "" - -#: read.c:2563 +#: read.c:2606 #, c-format msgid "unrecognized section type `%s'" msgstr "" -#: read.c:2577 +#: read.c:2620 msgid "absolute sections are not supported" msgstr "" -#: read.c:2592 +#: read.c:2635 #, c-format msgid "unrecognized section command `%s'" msgstr "" -#: read.c:2680 +#: read.c:2701 +msgid ".endr encountered without preceeding .rept, .irc, or .irp" +msgstr "" + +#: read.c:2733 #, c-format msgid "%s without %s" msgstr "" -#: read.c:2881 -msgid "Unsupported variable size or fill value" +#: read.c:2942 +msgid "unsupported variable size or fill value" msgstr "" -#: read.c:2906 +#: read.c:2967 msgid ".space repeat count is zero, ignored" msgstr "" -#: read.c:2908 +#: read.c:2969 msgid ".space repeat count is negative, ignored" msgstr "" -#: read.c:2937 +#: read.c:2998 msgid "space allocation too complex in absolute section" msgstr "" -#: read.c:2943 +#: read.c:3004 msgid "space allocation too complex in common section" msgstr "" -#: read.c:3031 read.c:4114 +#: read.c:3092 read.c:4175 #, c-format -msgid "Bad floating literal: %s" +msgid "bad floating literal: %s" msgstr "" -#: read.c:3104 +#: read.c:3165 #, c-format -msgid "Rest of line ignored. First ignored character is `%c'." +msgid "rest of line ignored; first ignored character is `%c'" msgstr "" -#: read.c:3107 +#: read.c:3168 #, c-format -msgid "Rest of line ignored. First ignored character valued 0x%x." -msgstr "" - -#: read.c:3158 -msgid "illegal expression; zero assumed" +msgid "rest of line ignored; first ignored character valued 0x%x" msgstr "" -#: read.c:3160 -msgid "missing expression; zero assumed" +#: read.c:3221 +msgid "missing expression" msgstr "" -#: read.c:3331 +#: read.c:3392 msgid "rva without symbol" msgstr "" -#: read.c:3455 +#: read.c:3516 msgid "attempt to store value in absolute section" msgstr "" -#: read.c:3493 read.c:4391 +#: read.c:3554 read.c:4453 msgid "zero assumed for missing expression" msgstr "" -#: read.c:3505 read.c:4403 +#: read.c:3566 read.c:4465 write.c:293 msgid "register value used as expression" msgstr "" #. Leading bits contain both 0s & 1s. -#: read.c:3595 +#: read.c:3656 #, c-format -msgid "Value 0x%lx truncated to 0x%lx." +msgid "value 0x%lx truncated to 0x%lx" msgstr "" -#: read.c:3611 +#: read.c:3672 #, c-format -msgid "Bignum truncated to %d bytes" +msgid "bignum truncated to %d bytes" msgstr "" -#: read.c:3688 +#: read.c:3749 #, c-format msgid "unsupported BFD relocation size %u" msgstr "" -#: read.c:3778 +#: read.c:3839 msgid "using a bit field width of zero" msgstr "" -#: read.c:3786 +#: read.c:3847 #, c-format msgid "field width \"%s\" too complex for a bitfield" msgstr "" -#: read.c:3794 +#: read.c:3855 #, c-format msgid "field width %lu too big to fit in %d bytes: truncated to %d bits" msgstr "" -#: read.c:3816 +#: read.c:3877 #, c-format msgid "field value \"%s\" too complex for a bitfield" msgstr "" -#: read.c:3942 -msgid "Unresolvable or nonpositive repeat count; using 1" +#: read.c:4003 read.c:4197 +msgid "unresolvable or nonpositive repeat count; using 1" msgstr "" -#: read.c:3993 +#: read.c:4054 #, c-format -msgid "Unknown floating type type '%c'" -msgstr "" - -#: read.c:4015 -msgid "Floating point constant too large" +msgid "unknown floating type type '%c'" msgstr "" -#: read.c:4136 -msgid "unresolvable or nonpositive repeat count; using 1" +#: read.c:4076 +msgid "floating point constant too large" msgstr "" -#: read.c:4534 -msgid "Expected <nn>" +#: read.c:4607 +msgid "expected <nn>" msgstr "" #. To be compatible with BSD 4.2 as: give the luser a linefeed!! -#: read.c:4567 read.c:4653 -msgid "Unterminated string: Newline inserted." +#: read.c:4640 read.c:4726 +msgid "unterminated string; newline inserted" msgstr "" -#: read.c:4661 -msgid "Bad escaped character in string, '?' assumed" +#: read.c:4734 +msgid "bad escaped character in string" msgstr "" -#: read.c:4687 -msgid "expected address expression; zero assumed" +#: read.c:4760 +msgid "expected address expression" msgstr "" -#: read.c:4707 +#: read.c:4780 #, c-format msgid "symbol \"%s\" undefined; zero assumed" msgstr "" -#: read.c:4710 +#: read.c:4783 msgid "some symbol undefined; zero assumed" msgstr "" -#: read.c:4763 -msgid "This string may not contain '\\0'" +#: read.c:4801 +msgid "bad or irreducible absolute expression" +msgstr "" + +#: read.c:4836 +msgid "this string may not contain '\\0'" +msgstr "" + +#: read.c:4873 +msgid "missing string" msgstr "" -#: read.c:4800 -msgid "Missing string" +#: read.c:4996 +#, c-format +msgid ".incbin count zero, ignoring `%s'" msgstr "" #: read.c:5022 -msgid "missing .func" +#, c-format +msgid "file not found: %s" msgstr "" -#: read.c:5039 -msgid ".endfunc missing for previous .func" +#: read.c:5036 +#, c-format +msgid "seek to end of .incbin file failed `%s'" msgstr "" -#: stabs.c:213 -msgid ".stabs: Missing comma" +#: read.c:5047 +#, c-format +msgid "skip (%ld) + count (%ld) larger than file size (%ld)" msgstr "" -#: stabs.c:221 stabs.c:229 stabs.c:240 +#: read.c:5054 #, c-format -msgid ".stab%c: Missing comma" +msgid "could not skip to %ld in file `%s'" msgstr "" -#: stabs.c:419 -msgid "comma missing in .xstabs" +#: read.c:5063 +#, c-format +msgid "truncated file `%s', %ld of %ld bytes read" +msgstr "" + +#: read.c:5226 +msgid "missing .func" +msgstr "" + +#: read.c:5243 +msgid ".endfunc missing for previous .func" msgstr "" -#: subsegs.c:376 +#: stabs.c:220 stabs.c:228 stabs.c:236 stabs.c:247 #, c-format -msgid "Attempt to switch to nonexistent segment \"%s\"" +msgid ".stab%c: missing comma" +msgstr "" + +#: stabs.c:427 +msgid "comma missing in .xstabs" msgstr "" -#: symbols.c:357 symbols.c:456 +#: subsegs.c:377 #, c-format -msgid "Symbol %s already defined." +msgid "attempt to switch to nonexistent segment \"%s\"" msgstr "" -#: symbols.c:442 +#: symbols.c:446 #, c-format -msgid "Symbol \"%s\" is already defined as \"%s\"/%s%ld." +msgid "symbol `%s' is already defined as \"%s\"/%s%ld" msgstr "" -#: symbols.c:519 symbols.c:526 +#: symbols.c:523 symbols.c:530 #, c-format -msgid "Inserting \"%s\" into symbol table failed: %s" +msgid "inserting \"%s\" into symbol table failed: %s" msgstr "" -#: symbols.c:872 +#: symbols.c:873 #, c-format -msgid "Symbol definition loop encountered at %s" +msgid "symbol definition loop encountered at `%s'" msgstr "" -#: symbols.c:1050 symbols.c:1054 +#: symbols.c:1082 symbols.c:1086 #, c-format -msgid "undefined symbol %s in operation" +msgid "undefined symbol `%s' in operation" msgstr "" -#: symbols.c:1059 +#: symbols.c:1091 msgid "invalid section for operation" msgstr "" -#: symbols.c:1064 symbols.c:1068 +#: symbols.c:1096 symbols.c:1100 #, c-format -msgid "undefined symbol %s in operation setting %s" +msgid "undefined symbol `%s' in operation setting `%s'" msgstr "" -#: symbols.c:1073 +#: symbols.c:1105 #, c-format -msgid "invalid section for operation setting %s" +msgid "invalid section for operation setting `%s'" msgstr "" -#: symbols.c:1091 +#: symbols.c:1123 #, c-format -msgid "division by zero when setting %s" +msgid "division by zero when setting `%s'" msgstr "" -#: symbols.c:1163 write.c:1945 +#: symbols.c:1202 write.c:2009 #, c-format -msgid "can't resolve value for symbol \"%s\"" +msgid "can't resolve value for symbol `%s'" msgstr "" -#: symbols.c:1533 +#: symbols.c:1596 #, c-format msgid "\"%d\" (instance number %d of a %s label)" msgstr "" -#: symbols.c:1589 +#: symbols.c:1633 #, c-format -msgid "Attempt to get value of unresolved symbol %s" +msgid "attempt to get value of unresolved symbol `%s'" +msgstr "" + +#: symbols.c:1869 +msgid "section symbols are already global" msgstr "" -#: write.c:172 +#: write.c:179 #, c-format msgid "field fx_size too small to hold %d" msgstr "" -#: write.c:309 +#: write.c:320 msgid "rva not supported" msgstr "" -#: write.c:517 +#: write.c:528 #, c-format msgid "attempt to .org/.space backwards? (%ld)" msgstr "" -#: write.c:995 +#: write.c:1029 msgid "relocation out of range" msgstr "" -#: write.c:998 +#: write.c:1032 #, c-format msgid "%s:%u: bad return from bfd_install_relocation: %x" msgstr "" -#: write.c:1043 +#: write.c:1076 msgid "internal error: fixup not contained within frag" msgstr "" -#: write.c:1059 +#: write.c:1092 #, c-format msgid "%s:%u: bad return from bfd_install_relocation" msgstr "" -#: write.c:1146 write.c:1170 +#: write.c:1179 write.c:1203 #, c-format msgid "FATAL: Can't write %s" msgstr "" -#: write.c:1202 -msgid "Cannot write to output file." +#: write.c:1235 +msgid "cannot write to output file" msgstr "" -#: write.c:1451 +#: write.c:1484 #, c-format -msgid "%d error%s, %d warning%s, generating bad object file.\n" +msgid "%d error%s, %d warning%s, generating bad object file" msgstr "" -#: write.c:1458 +#: write.c:1491 #, c-format -msgid "%d error%s, %d warning%s, no object file generated.\n" +msgid "%d error%s, %d warning%s, no object file generated" msgstr "" -#: write.c:1882 +#: write.c:1947 #, c-format -msgid "local label %s is not defined" +msgid "local label `%s' is not defined" msgstr "" -#: write.c:2187 +#: write.c:2245 #, c-format msgid "alignment padding (%lu bytes) not a multiple of %ld" msgstr "" -#: write.c:2297 +#: write.c:2362 #, c-format msgid ".word %s-%s+%s didn't fit" msgstr "" -#: write.c:2378 -msgid "attempt to .org backwards ignored" +#: write.c:2447 +msgid "attempt to .org backwards" msgstr "" -#: write.c:2402 +#: write.c:2475 msgid ".space specifies non-absolute value" msgstr "" -#: write.c:2406 +#: write.c:2482 msgid ".space or .fill with negative value, ignored" msgstr "" -#: write.c:2657 +#: write.c:2656 +#, c-format +msgid "negative of non-absolute symbol `%s'" +msgstr "" + +#: write.c:2750 #, c-format msgid "" -"Subtraction of two symbols in different sections \"%s\" {%s section} - " -"\"%s\" {%s section} at file address %s." +"subtraction of two symbols in different sections `%s' {%s section} - `%s' {%" +"s section} at file address %s" +msgstr "" + +#: write.c:2886 +#, c-format +msgid "value of %s too large for field of %d bytes at %s" msgstr "" -#: write.c:2811 +#: write.c:2898 #, c-format -msgid "Value of %s too large for field of %d bytes at %s" +msgid "signed .word overflow; switch may be too large; %ld at 0x%lx" msgstr "" diff --git a/contrib/binutils/gas/read.c b/contrib/binutils/gas/read.c index 32050c4..b0446c8d 100644 --- a/contrib/binutils/gas/read.c +++ b/contrib/binutils/gas/read.c @@ -1,6 +1,6 @@ /* read.c - read a source file - Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000 Free Software Foundation, Inc. + 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -35,10 +35,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA /* Routines that read assembler source text to build spagetti in memory. Another group of these functions is in the expr.c module. */ -/* For isdigit (). */ -#include <ctype.h> - #include "as.h" +#include "safe-ctype.h" #include "subsegs.h" #include "sb.h" #include "macro.h" @@ -317,6 +315,7 @@ static const pseudo_typeS potable[] = { {"endc", s_endif, 0}, {"endfunc", s_func, 1}, {"endif", s_endif, 0}, + {"endr", s_bad_endr, 0}, /* endef */ {"equ", s_set, 0}, {"equiv", s_set, 1}, @@ -349,6 +348,7 @@ static const pseudo_typeS potable[] = { {"ifne", s_if, (int) O_ne}, {"ifnes", s_ifeqs, 1}, {"ifnotdef", s_ifdef, 1}, + {"incbin", s_incbin, 0}, {"include", s_include, 0}, {"int", cons, 4}, {"irp", s_irp, 0}, @@ -738,8 +738,7 @@ read_a_source_file (name) while (*s2) { - if (isupper ((unsigned char) *s2)) - *s2 = tolower (*s2); + *s2 = TOLOWER (*s2); s2++; } } @@ -799,7 +798,7 @@ read_a_source_file (name) /* Print the error msg now, while we still can. */ if (pop == NULL) { - as_bad (_("Unknown pseudo-op: `%s'"), s); + as_bad (_("unknown pseudo-op: `%s'"), s); *input_line_pointer = c; s_ignore (0); continue; @@ -906,8 +905,7 @@ read_a_source_file (name) if (is_end_of_line[(unsigned char) c]) continue; - if ((LOCAL_LABELS_DOLLAR || LOCAL_LABELS_FB) - && isdigit ((unsigned char) c)) + if ((LOCAL_LABELS_DOLLAR || LOCAL_LABELS_FB) && ISDIGIT (c)) { /* local label ("4:") */ char *backup = input_line_pointer; @@ -917,7 +915,7 @@ read_a_source_file (name) temp = c - '0'; /* Read the whole number. */ - while (isdigit ((unsigned char) *input_line_pointer)) + while (ISDIGIT (*input_line_pointer)) { temp = (temp * 10) + *input_line_pointer - '0'; ++input_line_pointer; @@ -1052,8 +1050,8 @@ read_a_source_file (name) if (tc_unrecognized_line (c)) continue; #endif - /* as_warn (_("Junk character %d."),c); Now done by ignore_rest. */ - input_line_pointer--; /* Report unknown char as ignored. */ + input_line_pointer--; + /* Report unknown char as ignored. */ ignore_rest_of_line (); } @@ -1165,6 +1163,19 @@ do_align (n, fill, len, max) int len; int max; { + if (now_seg == absolute_section) + { + if (fill != NULL) + while (len-- > 0) + if (*fill++ != '\0') + { + as_warn (_("ignoring fill value in absolute section")); + break; + } + fill = NULL; + len = 0; + } + #ifdef md_do_align md_do_align (n, fill, len, max, just_record_alignment); #endif @@ -1235,7 +1246,7 @@ s_align (arg, bytes_p) for (i = 0; (align & 1) == 0; align >>= 1, ++i) ; if (align != 1) - as_bad (_("Alignment not a power of 2")); + as_bad (_("alignment not a power of 2")); align = i; } @@ -1244,7 +1255,7 @@ s_align (arg, bytes_p) if (align > 15) { align = 15; - as_bad (_("Alignment too large: %u assumed"), align); + as_warn (_("alignment too large: %u assumed"), align); } if (*input_line_pointer != ',') @@ -1351,11 +1362,21 @@ s_comm (ignore) /* Just after name is now '\0'. */ p = input_line_pointer; *p = c; + + if (name == p) + { + as_bad (_("expected symbol name")); + discard_rest_of_line (); + return; + } + SKIP_WHITESPACE (); if (*input_line_pointer != ',') { - as_bad (_("Expected comma after symbol-name: rest of line ignored.")); + *p = 0; + as_bad (_("expected comma after \"%s\""), name); + *p = c; ignore_rest_of_line (); if (flag_mri) mri_comment_end (stop, stopc); @@ -1366,7 +1387,7 @@ s_comm (ignore) if ((temp = get_absolute_expression ()) < 0) { - as_warn (_(".COMMon length (%ld.) <0! Ignored."), (long) temp); + as_warn (_(".COMMon length (%ld) < 0 ignored"), (long) temp); ignore_rest_of_line (); if (flag_mri) mri_comment_end (stop, stopc); @@ -1379,7 +1400,7 @@ s_comm (ignore) if (S_IS_DEFINED (symbolP) && !S_IS_COMMON (symbolP)) { - as_bad (_("Ignoring attempt to re-define symbol `%s'."), + as_bad (_("symbol `%s' is already defined"), S_GET_NAME (symbolP)); ignore_rest_of_line (); if (flag_mri) @@ -1390,7 +1411,7 @@ s_comm (ignore) if (S_GET_VALUE (symbolP)) { if (S_GET_VALUE (symbolP) != (valueT) temp) - as_bad (_("Length of .comm \"%s\" is already %ld. Not changed to %ld."), + as_bad (_("length of .comm \"%s\" is already %ld; not changing to %ld"), S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), (long) temp); @@ -1442,7 +1463,7 @@ s_mri_common (small) SKIP_WHITESPACE (); name = input_line_pointer; - if (!isdigit ((unsigned char) *name)) + if (!ISDIGIT (*name)) c = get_symbol_end (); else { @@ -1450,7 +1471,7 @@ s_mri_common (small) { ++input_line_pointer; } - while (isdigit ((unsigned char) *input_line_pointer)); + while (ISDIGIT (*input_line_pointer)); c = *input_line_pointer; *input_line_pointer = '\0'; @@ -1480,7 +1501,7 @@ s_mri_common (small) if (S_IS_DEFINED (sym) && !S_IS_COMMON (sym)) { - as_bad (_("attempt to re-define symbol `%s'"), S_GET_NAME (sym)); + as_bad (_("symbol `%s' is already defined"), S_GET_NAME (sym)); ignore_rest_of_line (); mri_comment_end (stop, stopc); return; @@ -1604,7 +1625,7 @@ s_app_line (ignore) if (l < 0) /* Some of the back ends can't deal with non-positive line numbers. Besides, it's silly. */ - as_warn (_("Line numbers must be positive; line number %d rejected."), + as_warn (_("line numbers must be positive; line number %d rejected"), l + 1); else { @@ -1700,18 +1721,18 @@ s_fill (ignore) #define BSD_FILL_SIZE_CROCK_8 (8) if (size > BSD_FILL_SIZE_CROCK_8) { - as_warn (_(".fill size clamped to %d."), BSD_FILL_SIZE_CROCK_8); + as_warn (_(".fill size clamped to %d"), BSD_FILL_SIZE_CROCK_8); size = BSD_FILL_SIZE_CROCK_8; } if (size < 0) { - as_warn (_("Size negative: .fill ignored.")); + as_warn (_("size negative; .fill ignored")); size = 0; } else if (rep_exp.X_op == O_constant && rep_exp.X_add_number <= 0) { if (rep_exp.X_add_number < 0) - as_warn (_("Repeat < 0, .fill ignored")); + as_warn (_("repeat < 0; .fill ignored")); size = 0; } @@ -1753,10 +1774,10 @@ s_fill (ignore) memset (p, 0, (unsigned int) size); /* The magic number BSD_FILL_SIZE_CROCK_4 is from BSD 4.2 VAX - flavoured AS. The following bizzare behaviour is to be + flavoured AS. The following bizarre behaviour is to be compatible with above. I guess they tried to take up to 8 bytes from a 4-byte expression and they forgot to sign - extend. Un*x Sux. */ + extend. */ #define BSD_FILL_SIZE_CROCK_4 (4) md_number_to_chars (p, (valueT) fill, (size > BSD_FILL_SIZE_CROCK_4 @@ -1797,7 +1818,7 @@ s_globl (ignore) { input_line_pointer++; SKIP_WHITESPACE (); - if (*input_line_pointer == '\n') + if (is_end_of_line[(unsigned char) *input_line_pointer]) c = '\n'; } } @@ -1941,6 +1962,14 @@ s_lcomm_internal (needs_align, bytes_p) c = get_symbol_end (); p = input_line_pointer; *p = c; + + if (name == p) + { + as_bad (_("expected symbol name")); + discard_rest_of_line (); + return; + } + SKIP_WHITESPACE (); /* Accept an optional comma after the name. The comma used to be @@ -1951,15 +1980,15 @@ s_lcomm_internal (needs_align, bytes_p) SKIP_WHITESPACE (); } - if (*input_line_pointer == '\n') + if (is_end_of_line[(unsigned char) *input_line_pointer]) { - as_bad (_("Missing size expression")); + as_bad (_("missing size expression")); return; } if ((temp = get_absolute_expression ()) < 0) { - as_warn (_("BSS length (%d.) <0! Ignored."), temp); + as_warn (_("BSS length (%d) < 0 ignored"), temp); ignore_rest_of_line (); return; } @@ -1969,7 +1998,7 @@ s_lcomm_internal (needs_align, bytes_p) || OUTPUT_FLAVOR == bfd_target_elf_flavour) { /* For MIPS and Alpha ECOFF or ELF, small objects are put in .sbss. */ - if (temp <= bfd_get_gp_size (stdoutput)) + if ((unsigned) temp <= bfd_get_gp_size (stdoutput)) { bss_seg = subseg_new (".sbss", 1); seg_info (bss_seg)->bss = 1; @@ -1998,7 +2027,7 @@ s_lcomm_internal (needs_align, bytes_p) if (*input_line_pointer != ',') { - as_bad (_("Expected comma after size")); + as_bad (_("expected comma after size")); ignore_rest_of_line (); return; } @@ -2006,9 +2035,9 @@ s_lcomm_internal (needs_align, bytes_p) input_line_pointer++; SKIP_WHITESPACE (); - if (*input_line_pointer == '\n') + if (is_end_of_line[(unsigned char) *input_line_pointer]) { - as_bad (_("Missing alignment")); + as_bad (_("missing alignment")); return; } @@ -2024,7 +2053,7 @@ s_lcomm_internal (needs_align, bytes_p) for (i = 0; (align & 1) == 0; align >>= 1, ++i) ; if (align != 1) - as_bad (_("Alignment not a power of 2")); + as_bad (_("alignment not a power of 2")); align = i; } } @@ -2032,12 +2061,12 @@ s_lcomm_internal (needs_align, bytes_p) if (align > max_alignment) { align = max_alignment; - as_warn (_("Alignment too large: %d. assumed."), align); + as_warn (_("alignment too large; %d assumed"), align); } else if (align < 0) { align = 0; - as_warn (_("Alignment negative. 0 assumed.")); + as_warn (_("alignment negative; 0 assumed")); } record_alignment (bss_seg, align); @@ -2105,8 +2134,7 @@ s_lcomm_internal (needs_align, bytes_p) #endif } else - as_bad (_("Ignoring attempt to re-define symbol `%s'."), - S_GET_NAME (symbolP)); + as_bad (_("symbol `%s' is already defined"), S_GET_NAME (symbolP)); subseg_set (current_seg, current_subseg); @@ -2142,12 +2170,20 @@ s_lsym (ignore) c = get_symbol_end (); p = input_line_pointer; *p = c; + + if (name == p) + { + as_bad (_("expected symbol name")); + discard_rest_of_line (); + return; + } + SKIP_WHITESPACE (); if (*input_line_pointer != ',') { *p = 0; - as_bad (_("Expected comma after name \"%s\""), name); + as_bad (_("expected comma after \"%s\""), name); *p = c; ignore_rest_of_line (); return; @@ -2187,7 +2223,7 @@ s_lsym (ignore) } else { - as_bad (_("Symbol %s already defined"), name); + as_bad (_("symbol `%s' is already defined"), name); } *p = c; @@ -2362,8 +2398,7 @@ do_org (segment, exp, fill) int fill; { if (segment != now_seg && segment != absolute_section) - as_bad (_("invalid segment \"%s\"; segment \"%s\" assumed"), - segment_name (segment), segment_name (now_seg)); + as_bad (_("invalid segment \"%s\""), segment_name (segment)); if (now_seg == absolute_section) { @@ -2463,7 +2498,7 @@ s_mri_sect (type) SKIP_WHITESPACE (); name = input_line_pointer; - if (!isdigit ((unsigned char) *name)) + if (!ISDIGIT (*name)) c = get_symbol_end (); else { @@ -2471,7 +2506,7 @@ s_mri_sect (type) { ++input_line_pointer; } - while (isdigit ((unsigned char) *input_line_pointer)); + while (ISDIGIT (*input_line_pointer)); c = *input_line_pointer; *input_line_pointer = '\0'; @@ -2496,7 +2531,7 @@ s_mri_sect (type) if (*input_line_pointer == ',') { c = *++input_line_pointer; - c = toupper ((unsigned char) c); + c = TOUPPER (c); if (c == 'C' || c == 'D' || c == 'M' || c == 'R') *type = c; else @@ -2660,6 +2695,16 @@ s_purgem (ignore) /* Handle the .rept pseudo-op. */ void +s_bad_endr (ignore) + int ignore ATTRIBUTE_UNUSED; +{ + as_warn (_(".endr encountered without preceeding .rept, .irc, or .irp")); + demand_empty_rest_of_line (); +} + +/* Handle the .rept pseudo-op. */ + +void s_rept (ignore) int ignore ATTRIBUTE_UNUSED; { @@ -2737,12 +2782,20 @@ s_set (equiv) delim = get_symbol_end (); end_name = input_line_pointer; *end_name = delim; + + if (name == end_name) + { + as_bad (_("expected symbol name")); + discard_rest_of_line (); + return; + } + SKIP_WHITESPACE (); if (*input_line_pointer != ',') { *end_name = 0; - as_bad (_("Expected comma after name \"%s\""), name); + as_bad (_("expected comma after \"%s\""), name); *end_name = delim; ignore_rest_of_line (); return; @@ -2800,7 +2853,7 @@ s_set (equiv) if (equiv && S_IS_DEFINED (symbolP) && S_GET_SEGMENT (symbolP) != reg_section) - as_bad (_("symbol `%s' already defined"), S_GET_NAME (symbolP)); + as_bad (_("symbol `%s' is already defined"), S_GET_NAME (symbolP)); pseudo_set (symbolP); demand_empty_rest_of_line (); @@ -2886,7 +2939,7 @@ s_space (mult) || (mult != 0 && mult != 1 && val.X_add_number != 0)) { if (exp.X_op != O_constant) - as_bad (_("Unsupported variable size or fill value")); + as_bad (_("unsupported variable size or fill value")); else { offsetT i; @@ -3011,7 +3064,7 @@ s_float_space (float_type) /* Skip any 0{letter} that may be present. Don't even check if the * letter is legal. */ if (input_line_pointer[0] == '0' - && isalpha ((unsigned char) input_line_pointer[1])) + && ISALPHA (input_line_pointer[1])) input_line_pointer += 2; /* Accept :xxxx, where the x's are hex digits, for a floating point @@ -3036,7 +3089,7 @@ s_float_space (float_type) know (flen > 0); if (err) { - as_bad (_("Bad floating literal: %s"), err); + as_bad (_("bad floating literal: %s"), err); ignore_rest_of_line (); if (flag_mri) mri_comment_end (stop, stopc); @@ -3108,12 +3161,12 @@ ignore_rest_of_line () /* For suspect lines: gives warning. */ if (!is_end_of_line[(unsigned char) *input_line_pointer]) { - if (isprint ((unsigned char) *input_line_pointer)) - as_bad (_("Rest of line ignored. First ignored character is `%c'."), - *input_line_pointer); + if (ISPRINT (*input_line_pointer)) + as_warn (_("rest of line ignored; first ignored character is `%c'"), + *input_line_pointer); else - as_bad (_("Rest of line ignored. First ignored character valued 0x%x."), - *input_line_pointer); + as_warn (_("rest of line ignored; first ignored character valued 0x%x"), + *input_line_pointer); while (input_line_pointer < buffer_limit && !is_end_of_line[(unsigned char) *input_line_pointer]) @@ -3163,15 +3216,15 @@ pseudo_set (symbolP) (void) expression (&exp); if (exp.X_op == O_illegal) - as_bad (_("illegal expression; zero assumed")); + as_bad (_("illegal expression")); else if (exp.X_op == O_absent) - as_bad (_("missing expression; zero assumed")); + as_bad (_("missing expression")); else if (exp.X_op == O_big) { if (exp.X_add_number > 0) - as_bad (_("bignum invalid; zero assumed")); + as_bad (_("bignum invalid")); else - as_bad (_("floating point number invalid; zero assumed")); + as_bad (_("floating point number invalid")); } else if (exp.X_op == O_subtract && (S_GET_SEGMENT (exp.X_add_symbol) @@ -3216,7 +3269,7 @@ pseudo_set (symbolP) || exp.X_add_number != 0) symbol_set_value_expression (symbolP, &exp); else if (symbol_section_p (symbolP)) - as_bad ("invalid attempt to set value of section symbol"); + as_bad ("attempt to set value of section symbol"); else { symbolS *s = exp.X_add_symbol; @@ -3504,7 +3557,7 @@ emit_expr (exp, nbytes) } else if (op == O_big && exp->X_add_number <= 0) { - as_bad (_("floating point number invalid; zero assumed")); + as_bad (_("floating point number invalid")); exp->X_add_number = 0; op = O_constant; } @@ -3600,7 +3653,7 @@ emit_expr (exp, nbytes) && ((get & mask) != mask || (get & hibit) == 0)) { /* Leading bits contain both 0s & 1s. */ - as_warn (_("Value 0x%lx truncated to 0x%lx."), + as_warn (_("value 0x%lx truncated to 0x%lx"), (unsigned long) get, (unsigned long) use); } /* Put bytes in right order. */ @@ -3616,7 +3669,7 @@ emit_expr (exp, nbytes) size = exp->X_add_number * CHARS_PER_LITTLENUM; if (nbytes < size) { - as_warn (_("Bignum truncated to %d bytes"), nbytes); + as_warn (_("bignum truncated to %d bytes"), nbytes); size = nbytes; } @@ -3630,7 +3683,7 @@ emit_expr (exp, nbytes) } nums = generic_bignum + size / CHARS_PER_LITTLENUM; - while (size > 0) + while (size >= CHARS_PER_LITTLENUM) { --nums; md_number_to_chars (p, (valueT) *nums, CHARS_PER_LITTLENUM); @@ -3641,7 +3694,7 @@ emit_expr (exp, nbytes) else { nums = generic_bignum; - while (size > 0) + while (size >= CHARS_PER_LITTLENUM) { md_number_to_chars (p, (valueT) *nums, CHARS_PER_LITTLENUM); ++nums; @@ -3650,7 +3703,7 @@ emit_expr (exp, nbytes) nbytes -= CHARS_PER_LITTLENUM; } - while (nbytes > 0) + while (nbytes >= CHARS_PER_LITTLENUM) { md_number_to_chars (p, extra_digit, CHARS_PER_LITTLENUM); nbytes -= CHARS_PER_LITTLENUM; @@ -3947,7 +4000,7 @@ parse_repeat_cons (exp, nbytes) if (count.X_op != O_constant || count.X_add_number <= 0) { - as_warn (_("Unresolvable or nonpositive repeat count; using 1")); + as_warn (_("unresolvable or nonpositive repeat count; using 1")); return; } @@ -3998,7 +4051,7 @@ hex_float (float_type, bytes) break; default: - as_bad (_("Unknown floating type type '%c'"), float_type); + as_bad (_("unknown floating type type '%c'"), float_type); return -1; } @@ -4020,7 +4073,7 @@ hex_float (float_type, bytes) if (i >= length) { - as_warn (_("Floating point constant too large")); + as_warn (_("floating point constant too large")); return -1; } d = hex_value (*input_line_pointer) << 4; @@ -4097,7 +4150,7 @@ float_cons (float_type) has no use for such information. Lusers beware: you get diagnostics if your input is ill-conditioned. */ if (input_line_pointer[0] == '0' - && isalpha ((unsigned char) input_line_pointer[1])) + && ISALPHA (input_line_pointer[1])) input_line_pointer += 2; /* Accept :xxxx, where the x's are hex digits, for a floating @@ -4119,7 +4172,7 @@ float_cons (float_type) know (length > 0); if (err) { - as_bad (_("Bad floating literal: %s"), err); + as_bad (_("bad floating literal: %s"), err); ignore_rest_of_line (); return; } @@ -4403,7 +4456,7 @@ emit_leb128_expr (exp, sign) } else if (op == O_big && exp->X_add_number <= 0) { - as_bad (_("floating point number invalid; zero assumed")); + as_bad (_("floating point number invalid")); exp->X_add_number = 0; op = O_constant; } @@ -4551,7 +4604,7 @@ stringer (append_zero) /* Worker to do .ascii etc statements. */ FRAG_APPEND_1_CHAR (c); if (*input_line_pointer != '>') { - as_bad (_("Expected <nn>")); + as_bad (_("expected <nn>")); } input_line_pointer++; break; @@ -4584,7 +4637,7 @@ next_char_of_string () break; case '\n': - as_warn (_("Unterminated string: Newline inserted.")); + as_warn (_("unterminated string; newline inserted")); bump_line_counters (); break; @@ -4635,7 +4688,7 @@ next_char_of_string () int i; for (i = 0, number = 0; - isdigit (c) && i < 3; + ISDIGIT (c) && i < 3; c = *input_line_pointer++, i++) { number = number * 8 + c - '0'; @@ -4653,11 +4706,11 @@ next_char_of_string () number = 0; c = *input_line_pointer++; - while (isxdigit (c)) + while (ISXDIGIT (c)) { - if (isdigit (c)) + if (ISDIGIT (c)) number = number * 16 + c - '0'; - else if (isupper (c)) + else if (ISUPPER (c)) number = number * 16 + c - 'A' + 10; else number = number * 16 + c - 'a' + 10; @@ -4670,7 +4723,7 @@ next_char_of_string () case '\n': /* To be compatible with BSD 4.2 as: give the luser a linefeed!! */ - as_warn (_("Unterminated string: Newline inserted.")); + as_warn (_("unterminated string; newline inserted")); c = '\n'; bump_line_counters (); break; @@ -4678,7 +4731,7 @@ next_char_of_string () default: #ifdef ONLY_STANDARD_ESCAPES - as_bad (_("Bad escaped character in string, '?' assumed")); + as_bad (_("bad escaped character in string")); c = '?'; #endif /* ONLY_STANDARD_ESCAPES */ @@ -4704,7 +4757,7 @@ get_segmented_expression (expP) || expP->X_op == O_absent || expP->X_op == O_big) { - as_bad (_("expected address expression; zero assumed")); + as_bad (_("expected address expression")); expP->X_op = O_constant; expP->X_add_number = 0; retval = absolute_section; @@ -4745,7 +4798,7 @@ get_absolute_expression () if (exp.X_op != O_constant) { if (exp.X_op != O_absent) - as_bad (_("bad or irreducible absolute expression; zero assumed")); + as_bad (_("bad or irreducible absolute expression")); exp.X_add_number = 0; } return exp.X_add_number; @@ -4780,7 +4833,7 @@ demand_copy_C_string (len_pointer) s = 0; len = 1; *len_pointer = 0; - as_bad (_("This string may not contain \'\\0\'")); + as_bad (_("this string may not contain \'\\0\'")); } } } @@ -4817,7 +4870,7 @@ demand_copy_string (lenP) } else { - as_warn (_("Missing string")); + as_warn (_("missing string")); retval = NULL; ignore_rest_of_line (); } @@ -4881,7 +4934,7 @@ equals (sym_name, reassign) if (!reassign && S_IS_DEFINED (symbolP) && S_GET_SEGMENT (symbolP) != reg_section) - as_bad (_("symbol `%s' already defined"), S_GET_NAME (symbolP)); + as_bad (_("symbol `%s' is already defined"), S_GET_NAME (symbolP)); #ifdef OBJ_COFF /* "set" symbols are local unless otherwise specified. */ @@ -4900,6 +4953,123 @@ equals (sym_name, reassign) } } +/* .incbin -- include a file verbatim at the current location. */ + +void +s_incbin (x) + int x ATTRIBUTE_UNUSED; +{ + FILE * binfile; + char * path; + char * filename; + char * binfrag; + long skip = 0; + long count = 0; + long bytes; + int len; + +#ifdef md_flush_pending_output + md_flush_pending_output (); +#endif + + SKIP_WHITESPACE (); + filename = demand_copy_string (& len); + if (filename == NULL) + return; + + SKIP_WHITESPACE (); + + /* Look for optional skip and count. */ + if (* input_line_pointer == ',') + { + ++ input_line_pointer; + skip = get_absolute_expression (); + + SKIP_WHITESPACE (); + + if (* input_line_pointer == ',') + { + ++ input_line_pointer; + + count = get_absolute_expression (); + if (count == 0) + as_warn (_(".incbin count zero, ignoring `%s'"), filename); + + SKIP_WHITESPACE (); + } + } + + demand_empty_rest_of_line (); + + /* Try opening absolute path first, then try include dirs. */ + binfile = fopen (filename, FOPEN_RB); + if (binfile == NULL) + { + int i; + + path = xmalloc ((unsigned long) len + include_dir_maxlen + 5); + + for (i = 0; i < include_dir_count; i++) + { + sprintf (path, "%s/%s", include_dirs[i], filename); + + binfile = fopen (path, FOPEN_RB); + if (binfile != NULL) + break; + } + + if (binfile == NULL) + as_bad (_("file not found: %s"), filename); + } + else + path = xstrdup (filename); + + if (binfile) + { + long file_len; + + register_dependency (path); + + /* Compute the length of the file. */ + if (fseek (binfile, 0, SEEK_END) != 0) + { + as_bad (_("seek to end of .incbin file failed `%s'"), path); + goto done; + } + file_len = ftell (binfile); + + /* If a count was not specified use the size of the file. */ + if (count == 0) + count = file_len; + + if (skip + count > file_len) + { + as_bad (_("skip (%ld) + count (%ld) larger than file size (%ld)"), + skip, count, file_len); + goto done; + } + + if (fseek (binfile, skip, SEEK_SET) != 0) + { + as_bad (_("could not skip to %ld in file `%s'"), skip, path); + goto done; + } + + /* Allocate frag space and store file contents in it. */ + binfrag = frag_more (count); + + bytes = fread (binfrag, 1, count, binfile); + if (bytes < count) + as_warn (_("truncated file `%s', %ld of %ld bytes read"), + path, bytes, count); + } +done: + if (binfile != NULL) + fclose (binfile); + if (path) + free (path); +} + /* .include -- include a file at this point. */ void @@ -4948,7 +5118,7 @@ s_include (arg) strcpy (path, include_dirs[i]); strcat (path, "/"); strcat (path, filename); - if (0 != (try = fopen (path, "r"))) + if (0 != (try = fopen (path, FOPEN_RT))) { fclose (try); goto gotit; diff --git a/contrib/binutils/gas/read.h b/contrib/binutils/gas/read.h index d19deec..60b4bed 100644 --- a/contrib/binutils/gas/read.h +++ b/contrib/binutils/gas/read.h @@ -139,6 +139,7 @@ extern void s_align_bytes PARAMS ((int arg)); extern void s_align_ptwo PARAMS ((int)); extern void s_app_file PARAMS ((int)); extern void s_app_line PARAMS ((int)); +extern void s_bad_endr PARAMS ((int)); extern void s_comm PARAMS ((int)); extern void s_data PARAMS ((int)); extern void s_desc PARAMS ((int)); @@ -181,3 +182,4 @@ extern void s_text PARAMS ((int)); extern void stringer PARAMS ((int append_zero)); extern void s_xstab PARAMS ((int what)); extern void s_rva PARAMS ((int)); +extern void s_incbin PARAMS ((int)); diff --git a/contrib/binutils/gas/stabs.c b/contrib/binutils/gas/stabs.c index eed11b3..60b03c4 100644 --- a/contrib/binutils/gas/stabs.c +++ b/contrib/binutils/gas/stabs.c @@ -217,7 +217,7 @@ s_stab_generic (what, stab_secname, stabstr_secname) input_line_pointer++; else { - as_warn (_(".stabs: Missing comma")); + as_warn (_(".stab%c: missing comma"), what); ignore_rest_of_line (); return; } @@ -225,7 +225,7 @@ s_stab_generic (what, stab_secname, stabstr_secname) if (get_absolute_expression_and_terminator (&longint) != ',') { - as_warn (_(".stab%c: Missing comma"), what); + as_warn (_(".stab%c: missing comma"), what); ignore_rest_of_line (); return; } @@ -233,7 +233,7 @@ s_stab_generic (what, stab_secname, stabstr_secname) if (get_absolute_expression_and_terminator (&longint) != ',') { - as_warn (_(".stab%c: Missing comma"), what); + as_warn (_(".stab%c: missing comma"), what); ignore_rest_of_line (); return; } @@ -244,7 +244,7 @@ s_stab_generic (what, stab_secname, stabstr_secname) { if (*input_line_pointer != ',') { - as_warn (_(".stab%c: Missing comma"), what); + as_warn (_(".stab%c: missing comma"), what); ignore_rest_of_line (); return; } @@ -469,7 +469,7 @@ s_desc (ignore) if (*input_line_pointer != ',') { *p = 0; - as_bad (_("Expected comma after name \"%s\""), name); + as_bad (_("expected comma after \"%s\""), name); *p = c; ignore_rest_of_line (); } @@ -539,7 +539,7 @@ generate_asm_file (type, file) while (tmp < endp) { char *bslash = strchr (tmp, '\\'); - int len = (bslash ? (bslash - tmp + 1) : strlen (tmp)); + size_t len = (bslash) ? (size_t) (bslash - tmp + 1) : strlen (tmp); /* Double all backslashes, since demand_copy_C_string (used by s_stab to extract the part in quotes) will try to replace them as @@ -580,10 +580,9 @@ stabs_generate_asm_lineno () unsigned int lineno; char *buf; char sym[30]; - - /* Let the world know that we are in the middle of generating a - piece of stabs line debugging information. */ - outputting_stabs_line_debug = 1; + /* Remember the last file/line and avoid duplicates. */ + static unsigned int prev_lineno = -1; + static char *prev_file = NULL; /* Rather than try to do this in some efficient fashion, we just generate a string and then parse it again. That lets us use the @@ -594,6 +593,34 @@ stabs_generate_asm_lineno () as_where (&file, &lineno); + /* Don't emit sequences of stabs for the same line. */ + if (prev_file == NULL) + { + /* First time thru. */ + prev_file = xstrdup (file); + prev_lineno = lineno; + } + else if (lineno == prev_lineno + && strcmp (file, prev_file) == 0) + { + /* Same file/line as last time. */ + return; + } + else + { + /* Remember file/line for next time. */ + prev_lineno = lineno; + if (strcmp (file, prev_file) != 0) + { + free (prev_file); + prev_file = xstrdup (file); + } + } + + /* Let the world know that we are in the middle of generating a + piece of stabs line debugging information. */ + outputting_stabs_line_debug = 1; + generate_asm_file (N_SOL, file); sprintf (sym, "%sL%d", FAKE_LABEL_NAME, label_count); diff --git a/contrib/binutils/gas/struc-symbol.h b/contrib/binutils/gas/struc-symbol.h index 6573f2c..90945c4 100644 --- a/contrib/binutils/gas/struc-symbol.h +++ b/contrib/binutils/gas/struc-symbol.h @@ -122,14 +122,14 @@ struct local_symbol /* The symbol section. This also serves as a flag. If this is reg_section, then this symbol has been converted into a regular - symbol, and sy_sym points to it. */ + symbol, and lsy_sym points to it. */ segT lsy_section; /* The symbol name. */ const char *lsy_name; /* The symbol frag or the real symbol, depending upon the value in - sy_section. If the symbol has been fully resolved, lsy_frag is + lsy_section. If the symbol has been fully resolved, lsy_frag is set to NULL. */ union { @@ -137,8 +137,12 @@ struct local_symbol symbolS *lsy_sym; } u; - /* The offset within the frag. */ - valueT lsy_offset; + /* The value of the symbol. */ + valueT lsy_value; + +#ifdef TC_LOCAL_SYMFIELD_TYPE + TC_LOCAL_SYMFIELD_TYPE lsy_tc; +#endif }; #define local_symbol_converted_p(l) ((l)->lsy_section == reg_section) diff --git a/contrib/binutils/gas/subsegs.c b/contrib/binutils/gas/subsegs.c index 611d64c..c815953 100644 --- a/contrib/binutils/gas/subsegs.c +++ b/contrib/binutils/gas/subsegs.c @@ -374,7 +374,7 @@ subseg_new (segname, subseg) return new_seg; } #else - as_bad (_("Attempt to switch to nonexistent segment \"%s\""), segname); + as_bad (_("attempt to switch to nonexistent segment \"%s\""), segname); return now_seg; #endif } @@ -587,7 +587,7 @@ subseg_text_p (sec) #else /* ! BFD_ASSEMBLER */ const char * const *p; - if (sec == data_section || sec == bss_section) + if (sec == data_section || sec == bss_section || sec == absolute_section) return 0; for (p = nontext_section_names; *p != NULL; ++p) diff --git a/contrib/binutils/gas/symbols.c b/contrib/binutils/gas/symbols.c index a72ba42..5dd3040 100644 --- a/contrib/binutils/gas/symbols.c +++ b/contrib/binutils/gas/symbols.c @@ -22,10 +22,9 @@ /* #define DEBUG_SYMS / * to debug symbol list maintenance. */ -#include <ctype.h> - #include "as.h" +#include "safe-ctype.h" #include "obstack.h" /* For "symbols.h" */ #include "subsegs.h" @@ -61,6 +60,7 @@ symbolS abs_symbol; struct obstack notes; +static char *save_symbol_name PARAMS ((const char *)); static void fb_label_init PARAMS ((void)); static long dollar_label_instance PARAMS ((long)); static long fb_label_instance PARAMS ((long)); @@ -123,11 +123,10 @@ save_symbol_name (name) if (! symbols_case_sensitive) { - unsigned char *s; + char *s; - for (s = (unsigned char *) ret; *s != '\0'; s++) - if (islower (*s)) - *s = toupper (*s); + for (s = ret; *s != '\0'; s++) + *s = TOUPPER (*s); } return ret; @@ -206,10 +205,10 @@ static unsigned long local_symbol_conversion_count; /* Create a local symbol and insert it into the local hash table. */ static struct local_symbol * -local_symbol_make (name, section, offset, frag) +local_symbol_make (name, section, value, frag) const char *name; segT section; - valueT offset; + valueT value; fragS *frag; { char *name_copy; @@ -224,7 +223,7 @@ local_symbol_make (name, section, offset, frag) ret->lsy_name = name_copy; ret->lsy_section = section; local_symbol_set_frag (ret, frag); - ret->lsy_offset = offset; + ret->lsy_value = value; hash_jam (local_hash, name_copy, (PTR) ret); @@ -246,7 +245,7 @@ local_symbol_convert (locsym) ++local_symbol_conversion_count; - ret = symbol_new (locsym->lsy_name, locsym->lsy_section, locsym->lsy_offset, + ret = symbol_new (locsym->lsy_name, locsym->lsy_section, locsym->lsy_value, local_symbol_get_frag (locsym)); if (local_symbol_resolved_p (locsym)) @@ -255,6 +254,10 @@ local_symbol_convert (locsym) /* Local symbols are always either defined or used. */ ret->sy_used = 1; +#ifdef TC_LOCAL_SYMFIELD_CONVERT + TC_LOCAL_SYMFIELD_CONVERT (locsym, ret); +#endif + symbol_table_insert (ret); local_symbol_mark_converted (locsym); @@ -353,15 +356,15 @@ colon (sym_name) /* Just seen "x:" - rattle symbols & frags. */ if (locsym->lsy_section != undefined_section && (local_symbol_get_frag (locsym) != frag_now || locsym->lsy_section != now_seg - || locsym->lsy_offset != frag_now_fix ())) + || locsym->lsy_value != frag_now_fix ())) { - as_bad (_("Symbol %s already defined."), sym_name); + as_bad (_("symbol `%s' is already defined"), sym_name); return symbolP; } locsym->lsy_section = now_seg; local_symbol_set_frag (locsym, frag_now); - locsym->lsy_offset = frag_now_fix (); + locsym->lsy_value = frag_now_fix (); #endif } else if (!S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP)) @@ -440,7 +443,7 @@ colon (sym_name) /* Just seen "x:" - rattle symbols & frags. */ S_GET_OTHER (symbolP), S_GET_DESC (symbolP)); #endif - as_bad (_("Symbol \"%s\" is already defined as \"%s\"/%s%ld."), + as_bad (_("symbol `%s' is already defined as \"%s\"/%s%ld"), sym_name, segment_name (S_GET_SEGMENT (symbolP)), od_buf, @@ -454,7 +457,7 @@ colon (sym_name) /* Just seen "x:" - rattle symbols & frags. */ if (!(frag_now == symbolP->sy_frag && S_GET_VALUE (symbolP) == frag_now_fix () && S_GET_SEGMENT (symbolP) == now_seg)) - as_bad (_("Symbol %s already defined."), sym_name); + as_bad (_("symbol `%s' is already defined"), sym_name); } } @@ -517,14 +520,14 @@ symbol_table_insert (symbolP) error_string = hash_jam (local_hash, S_GET_NAME (symbolP), (PTR) symbolP); if (error_string != NULL) - as_fatal (_("Inserting \"%s\" into symbol table failed: %s"), + as_fatal (_("inserting \"%s\" into symbol table failed: %s"), S_GET_NAME (symbolP), error_string); return; } if ((error_string = hash_jam (sy_hash, S_GET_NAME (symbolP), (PTR) symbolP))) { - as_fatal (_("Inserting \"%s\" into symbol table failed: %s"), + as_fatal (_("inserting \"%s\" into symbol table failed: %s"), S_GET_NAME (symbolP), error_string); } /* on error */ } @@ -625,9 +628,7 @@ symbol_find_base (name, strip_underscore) while ((c = *orig++) != '\0') { - if (islower (c)) - c = toupper (c); - *copy++ = c; + *copy++ = TOUPPER (c); } *copy = '\0'; } @@ -827,9 +828,8 @@ verify_symbol_chain_2 (sym) values. */ valueT -resolve_symbol_value (symp, finalize) +resolve_symbol_value (symp) symbolS *symp; - int finalize; { int resolved; valueT final_val; @@ -840,15 +840,15 @@ resolve_symbol_value (symp, finalize) { struct local_symbol *locsym = (struct local_symbol *) symp; + final_val = locsym->lsy_value; if (local_symbol_resolved_p (locsym)) - return locsym->lsy_offset / bfd_octets_per_byte (stdoutput); + return final_val; - final_val = (local_symbol_get_frag (locsym)->fr_address - + locsym->lsy_offset) / bfd_octets_per_byte (stdoutput); + final_val += local_symbol_get_frag (locsym)->fr_address / OCTETS_PER_BYTE; - if (finalize) + if (finalize_syms) { - locsym->lsy_offset = final_val; + locsym->lsy_value = final_val; local_symbol_mark_resolved (locsym); } @@ -869,8 +869,8 @@ resolve_symbol_value (symp, finalize) if (symp->sy_resolving) { - if (finalize) - as_bad (_("Symbol definition loop encountered at %s"), + if (finalize_syms) + as_bad (_("symbol definition loop encountered at `%s'"), S_GET_NAME (symp)); final_val = 0; resolved = 1; @@ -909,19 +909,22 @@ resolve_symbol_value (symp, finalize) case O_symbol: case O_symbol_rva: - left = resolve_symbol_value (add_symbol, finalize); - do_symbol: + left = resolve_symbol_value (add_symbol); + seg_left = S_GET_SEGMENT (add_symbol); + if (finalize_syms) + symp->sy_value.X_op_symbol = NULL; + do_symbol: if (symp->sy_mri_common) { /* This is a symbol inside an MRI common section. The - relocation routines are going to handle it specially. - Don't change the value. */ + relocation routines are going to handle it specially. + Don't change the value. */ resolved = symbol_resolved_p (add_symbol); break; } - if (finalize && final_val == 0) + if (finalize_syms && final_val == 0) { if (LOCAL_SYMBOL_CHECK (add_symbol)) add_symbol = local_symbol_convert ((struct local_symbol *) @@ -929,30 +932,51 @@ resolve_symbol_value (symp, finalize) copy_symbol_attributes (symp, add_symbol); } - /* If we have equated this symbol to an undefined symbol, we - keep X_op set to O_symbol, and we don't change - X_add_number. This permits the routine which writes out - relocation to detect this case, and convert the - relocation to be against the symbol to which this symbol - is equated. */ + /* If we have equated this symbol to an undefined or common + symbol, keep X_op set to O_symbol, and don't change + X_add_number. This permits the routine which writes out + relocation to detect this case, and convert the + relocation to be against the symbol to which this symbol + is equated. */ if (! S_IS_DEFINED (add_symbol) || S_IS_COMMON (add_symbol)) { - if (finalize) + if (finalize_syms) { - S_SET_SEGMENT (symp, S_GET_SEGMENT (add_symbol)); symp->sy_value.X_op = O_symbol; symp->sy_value.X_add_symbol = add_symbol; symp->sy_value.X_add_number = final_val; + /* Use X_op_symbol as a flag. */ + symp->sy_value.X_op_symbol = add_symbol; + final_seg = seg_left; } final_val = 0; resolved = symbol_resolved_p (add_symbol); + symp->sy_resolving = 0; + goto exit_dont_set_value; + } + else if (finalize_syms && final_seg == expr_section + && seg_left != expr_section) + { + /* If the symbol is an expression symbol, do similarly + as for undefined and common syms above. Handles + "sym +/- expr" where "expr" cannot be evaluated + immediately, and we want relocations to be against + "sym", eg. because it is weak. */ + symp->sy_value.X_op = O_symbol; + symp->sy_value.X_add_symbol = add_symbol; + symp->sy_value.X_add_number = final_val; + symp->sy_value.X_op_symbol = add_symbol; + final_seg = seg_left; + final_val += symp->sy_frag->fr_address + left; + resolved = symbol_resolved_p (add_symbol); + symp->sy_resolving = 0; goto exit_dont_set_value; } else { final_val += symp->sy_frag->fr_address + left; if (final_seg == expr_section || final_seg == undefined_section) - final_seg = S_GET_SEGMENT (add_symbol); + final_seg = seg_left; } resolved = symbol_resolved_p (add_symbol); @@ -961,7 +985,7 @@ resolve_symbol_value (symp, finalize) case O_uminus: case O_bit_not: case O_logical_not: - left = resolve_symbol_value (add_symbol, finalize); + left = resolve_symbol_value (add_symbol); if (op == O_uminus) left = -left; @@ -996,50 +1020,57 @@ resolve_symbol_value (symp, finalize) case O_gt: case O_logical_and: case O_logical_or: - left = resolve_symbol_value (add_symbol, finalize); - right = resolve_symbol_value (op_symbol, finalize); + left = resolve_symbol_value (add_symbol); + right = resolve_symbol_value (op_symbol); seg_left = S_GET_SEGMENT (add_symbol); seg_right = S_GET_SEGMENT (op_symbol); /* Simplify addition or subtraction of a constant by folding the constant into X_add_number. */ - if (op == O_add || op == O_subtract) + if (op == O_add) { if (seg_right == absolute_section) { - if (op == O_add) - final_val += right; - else - final_val -= right; - op = O_symbol; - op_symbol = NULL; + final_val += right; goto do_symbol; } - else if (seg_left == absolute_section && op == O_add) + else if (seg_left == absolute_section) { - op = O_symbol; final_val += left; add_symbol = op_symbol; left = right; - op_symbol = NULL; + seg_left = seg_right; + goto do_symbol; + } + } + else if (op == O_subtract) + { + if (seg_right == absolute_section) + { + final_val -= right; goto do_symbol; } } - /* Subtraction is permitted if both operands are in the same - section. Otherwise, both operands must be absolute. We - already handled the case of addition or subtraction of a - constant above. This will probably need to be changed - for an object file format which supports arbitrary - expressions, such as IEEE-695. */ - /* Don't emit messages unless we're finalizing the symbol value, + /* Equality and non-equality tests are permitted on anything. + Subtraction, and other comparison operators are permitted if + both operands are in the same section. Otherwise, both + operands must be absolute. We already handled the case of + addition or subtraction of a constant above. This will + probably need to be changed for an object file format which + supports arbitrary expressions, such as IEEE-695. + + Don't emit messages unless we're finalizing the symbol value, otherwise we may get the same message multiple times. */ - if ((seg_left != absolute_section - || seg_right != absolute_section) - && (op != O_subtract + if (op != O_eq && op != O_ne + && (seg_left != absolute_section + || seg_right != absolute_section) + && ((op != O_subtract + && op != O_lt && op != O_le && op != O_ge && op != O_gt) || seg_left != seg_right - || seg_left == undefined_section) - && finalize) + || (seg_left == undefined_section + && add_symbol != op_symbol)) + && finalize_syms) { char *file; unsigned int line; @@ -1048,11 +1079,11 @@ resolve_symbol_value (symp, finalize) { if (seg_left == undefined_section) as_bad_where (file, line, - _("undefined symbol %s in operation"), + _("undefined symbol `%s' in operation"), S_GET_NAME (symp->sy_value.X_add_symbol)); if (seg_right == undefined_section) as_bad_where (file, line, - _("undefined symbol %s in operation"), + _("undefined symbol `%s' in operation"), S_GET_NAME (symp->sy_value.X_op_symbol)); if (seg_left != undefined_section && seg_right != undefined_section) @@ -1062,16 +1093,16 @@ resolve_symbol_value (symp, finalize) else { if (seg_left == undefined_section) - as_bad (_("undefined symbol %s in operation setting %s"), + as_bad (_("undefined symbol `%s' in operation setting `%s'"), S_GET_NAME (symp->sy_value.X_add_symbol), S_GET_NAME (symp)); if (seg_right == undefined_section) - as_bad (_("undefined symbol %s in operation setting %s"), + as_bad (_("undefined symbol `%s' in operation setting `%s'"), S_GET_NAME (symp->sy_value.X_op_symbol), S_GET_NAME (symp)); if (seg_left != undefined_section && seg_right != undefined_section) - as_bad (_("invalid section for operation setting %s"), + as_bad (_("invalid section for operation setting `%s'"), S_GET_NAME (symp)); } } @@ -1080,8 +1111,8 @@ resolve_symbol_value (symp, finalize) if ((op == O_divide || op == O_modulus) && right == 0) { /* If seg_right is not absolute_section, then we've - already issued a warning about using a bad symbol. */ - if (seg_right == absolute_section && finalize) + already issued a warning about using a bad symbol. */ + if (seg_right == absolute_section && finalize_syms) { char *file; unsigned int line; @@ -1089,7 +1120,7 @@ resolve_symbol_value (symp, finalize) if (expr_symbol_where (symp, &file, &line)) as_bad_where (file, line, _("division by zero")); else - as_bad (_("division by zero when setting %s"), + as_bad (_("division by zero when setting `%s'"), S_GET_NAME (symp)); } @@ -1109,8 +1140,15 @@ resolve_symbol_value (symp, finalize) case O_bit_and: left &= right; break; case O_add: left += right; break; case O_subtract: left -= right; break; - case O_eq: left = left == right ? ~ (offsetT) 0 : 0; break; - case O_ne: left = left != right ? ~ (offsetT) 0 : 0; break; + case O_eq: + case O_ne: + left = (left == right && seg_left == seg_right + && (seg_left != undefined_section + || add_symbol == op_symbol) + ? ~ (offsetT) 0 : 0); + if (symp->sy_value.X_op == O_ne) + left = ~left; + break; case O_lt: left = left < right ? ~ (offsetT) 0 : 0; break; case O_le: left = left <= right ? ~ (offsetT) 0 : 0; break; case O_ge: left = left >= right ? ~ (offsetT) 0 : 0; break; @@ -1141,27 +1179,27 @@ resolve_symbol_value (symp, finalize) symp->sy_resolving = 0; } - if (finalize) - { - S_SET_VALUE (symp, final_val); + if (finalize_syms) + S_SET_VALUE (symp, final_val); +exit_dont_set_value: + /* Always set the segment, even if not finalizing the value. + The segment is used to determine whether a symbol is defined. */ #if defined (OBJ_AOUT) && ! defined (BFD_ASSEMBLER) - /* The old a.out backend does not handle S_SET_SEGMENT correctly - for a stab symbol, so we use this bad hack. */ - if (final_seg != S_GET_SEGMENT (symp)) + /* The old a.out backend does not handle S_SET_SEGMENT correctly + for a stab symbol, so we use this bad hack. */ + if (final_seg != S_GET_SEGMENT (symp)) #endif - S_SET_SEGMENT (symp, final_seg); - } + S_SET_SEGMENT (symp, final_seg); -exit_dont_set_value: /* Don't worry if we can't resolve an expr_section symbol. */ - if (finalize) + if (finalize_syms) { if (resolved) symp->sy_resolved = 1; else if (S_GET_SEGMENT (symp) != expr_section) { - as_bad (_("can't resolve value for symbol \"%s\""), + as_bad (_("can't resolve value for symbol `%s'"), S_GET_NAME (symp)); symp->sy_resolved = 1; } @@ -1182,7 +1220,7 @@ resolve_local_symbol (key, value) PTR value; { if (value != NULL) - resolve_symbol_value (value, 1); + resolve_symbol_value (value); } #endif @@ -1542,7 +1580,7 @@ decode_local_label_name (s) if (s[index] != 'L') return s; - for (label_number = 0, p = s + index + 1; isdigit ((unsigned char) *p); ++p) + for (label_number = 0, p = s + index + 1; ISDIGIT (*p); ++p) label_number = (10 * label_number) + *p - '0'; if (*p == DOLLAR_LABEL_CHAR) @@ -1552,7 +1590,7 @@ decode_local_label_name (s) else return s; - for (instance_number = 0, p++; isdigit ((unsigned char) *p); ++p) + for (instance_number = 0, p++; ISDIGIT (*p); ++p) instance_number = (10 * instance_number) + *p - '0'; message_format = _("\"%d\" (instance number %d of a %s label)"); @@ -1570,11 +1608,15 @@ S_GET_VALUE (s) { #ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) - return ((struct local_symbol *) s)->lsy_offset; + return resolve_symbol_value (s); #endif - if (!s->sy_resolved && s->sy_value.X_op != O_constant) - resolve_symbol_value (s, 1); + if (!s->sy_resolved) + { + valueT val = resolve_symbol_value (s); + if (!finalize_syms) + return val; + } if (s->sy_value.X_op != O_constant) { static symbolS *recur; @@ -1588,7 +1630,7 @@ S_GET_VALUE (s) if (! s->sy_resolved || s->sy_value.X_op != O_symbol || (S_IS_DEFINED (s) && ! S_IS_COMMON (s))) - as_bad (_("Attempt to get value of unresolved symbol %s"), + as_bad (_("attempt to get value of unresolved symbol `%s'"), S_GET_NAME (s)); recur = NULL; } @@ -1605,7 +1647,7 @@ S_SET_VALUE (s, val) #ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (s)) { - ((struct local_symbol *) s)->lsy_offset = val; + ((struct local_symbol *) s)->lsy_value = val; return; } #endif @@ -1824,7 +1866,7 @@ S_SET_EXTERNAL (s) /* Do not reassign section symbols. */ as_where (& file, & line); as_warn_where (file, line, - _("Section symbols are already global")); + _("section symbols are already global")); return; } s->bsym->flags |= BSF_GLOBAL; @@ -2137,6 +2179,24 @@ symbol_equated_p (s) return s->sy_value.X_op == O_symbol; } +/* Return whether a symbol is equated to another symbol, and should be + treated specially when writing out relocs. */ + +int +symbol_equated_reloc_p (s) + symbolS *s; +{ + if (LOCAL_SYMBOL_CHECK (s)) + return 0; + /* X_op_symbol, normally not used for O_symbol, is set by + resolve_symbol_value to flag expression syms that have been + equated. */ + return (s->sy_value.X_op == O_symbol + && ((s->sy_resolved && s->sy_value.X_op_symbol != NULL) + || ! S_IS_DEFINED (s) + || S_IS_COMMON (s))); +} + /* Return whether a symbol has a constant value. */ int @@ -2333,7 +2393,7 @@ print_symbol_value_1 (file, sym) #ifdef BFD_ASSEMBLER if (LOCAL_SYMBOL_CHECK (sym)) fprintf (file, "constant %lx", - (long) ((struct local_symbol *) sym)->lsy_offset); + (long) ((struct local_symbol *) sym)->lsy_value); else #endif print_expr_1 (file, &sym->sy_value); diff --git a/contrib/binutils/gas/symbols.h b/contrib/binutils/gas/symbols.h index ad2cde0..a80ca8c 100644 --- a/contrib/binutils/gas/symbols.h +++ b/contrib/binutils/gas/symbols.h @@ -61,7 +61,7 @@ void local_colon PARAMS ((int n)); void symbol_begin PARAMS ((void)); void symbol_print_statistics PARAMS ((FILE *)); void symbol_table_insert PARAMS ((symbolS * symbolP)); -valueT resolve_symbol_value PARAMS ((symbolS *, int)); +valueT resolve_symbol_value PARAMS ((symbolS *)); void resolve_local_symbol_values PARAMS ((void)); void print_symbol_value PARAMS ((symbolS *)); @@ -185,6 +185,7 @@ extern void symbol_mark_resolved PARAMS ((symbolS *)); extern int symbol_resolved_p PARAMS ((symbolS *)); extern int symbol_section_p PARAMS ((symbolS *)); extern int symbol_equated_p PARAMS ((symbolS *)); +extern int symbol_equated_reloc_p PARAMS ((symbolS *)); extern int symbol_constant_p PARAMS ((symbolS *)); #ifdef BFD_ASSEMBLER diff --git a/contrib/binutils/gas/tc.h b/contrib/binutils/gas/tc.h index 6becfb8..c8cb13c 100644 --- a/contrib/binutils/gas/tc.h +++ b/contrib/binutils/gas/tc.h @@ -71,11 +71,9 @@ void md_number_to_chars PARAMS ((char *buf, valueT val, int n)); void md_operand PARAMS ((expressionS * expressionP)); #endif -#ifdef MD_APPLY_FIX3 -int md_apply_fix3 PARAMS ((fixS * fixP, valueT *val, segT seg)); -#endif +void md_apply_fix3 PARAMS ((fixS *, valueT *, segT)); + #ifdef BFD_ASSEMBLER -int md_apply_fix PARAMS ((fixS * fixP, valueT *val)); #ifndef md_convert_frag void md_convert_frag PARAMS ((bfd * headers, segT sec, fragS * fragP)); #endif @@ -88,7 +86,6 @@ extern arelent *tc_gen_reloc PARAMS ((asection *, fixS *)); extern arelent **tc_gen_reloc PARAMS ((asection *, fixS *)); #endif #else /* not BFD_ASSEMBLER */ -void md_apply_fix PARAMS ((fixS * fixP, long val)); #ifndef md_convert_frag void md_convert_frag PARAMS ((object_headers * headers, segT, fragS * fragP)); #endif diff --git a/contrib/binutils/gas/write.c b/contrib/binutils/gas/write.c index cfdc9b5..9b20f90 100644 --- a/contrib/binutils/gas/write.c +++ b/contrib/binutils/gas/write.c @@ -52,6 +52,10 @@ #define TC_FIX_ADJUSTABLE(fix) 1 #endif +#ifndef TC_FINALIZE_SYMS_BEFORE_SIZE_SEG +#define TC_FINALIZE_SYMS_BEFORE_SIZE_SEG 1 +#endif + #ifndef MD_PCREL_FROM_SECTION #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from(FIXP) #endif @@ -61,6 +65,9 @@ extern CONST int md_short_jump_size; extern CONST int md_long_jump_size; #endif +/* Used to control final evaluation of expressions. */ +int finalize_syms = 0; + int symbol_table_frozen; void print_fixup PARAMS ((fixS *)); @@ -122,8 +129,6 @@ static fragS *chain_frchains_together_1 PARAMS ((segT, struct frchain *)); #ifdef BFD_ASSEMBLER static void chain_frchains_together PARAMS ((bfd *, segT, PTR)); static void cvt_frag_to_fill PARAMS ((segT, fragS *)); -static void relax_seg PARAMS ((bfd *, asection *, PTR)); -static void size_seg PARAMS ((bfd *, asection *, PTR)); static void adjust_reloc_syms PARAMS ((bfd *, asection *, PTR)); static void write_relocs PARAMS ((bfd *, asection *, PTR)); static void write_contents PARAMS ((bfd *, asection *, PTR)); @@ -598,20 +603,24 @@ cvt_frag_to_fill (headersP, sec, fragP) #endif /* defined (BFD_ASSEMBLER) || !defined (BFD) */ #ifdef BFD_ASSEMBLER +static void relax_seg PARAMS ((bfd *, asection *, PTR)); static void -relax_seg (abfd, sec, do_code) - bfd *abfd; +relax_seg (abfd, sec, xxx) + bfd *abfd ATTRIBUTE_UNUSED; asection *sec; - PTR do_code; + PTR xxx; { - flagword flags = bfd_get_section_flags (abfd, sec); segment_info_type *seginfo = seg_info (sec); - if (!(flags & SEC_CODE) == !do_code - && seginfo && seginfo->frchainP) - relax_segment (seginfo->frchainP->frch_root, sec); + if (seginfo && seginfo->frchainP + && relax_segment (seginfo->frchainP->frch_root, sec)) + { + int *result = (int *) xxx; + *result = 1; + } } +static void size_seg PARAMS ((bfd *, asection *, PTR)); static void size_seg (abfd, sec, xxx) bfd *abfd; @@ -753,15 +762,14 @@ adjust_reloc_syms (abfd, sec, xxx) symbols, though, since they are not in the regular symbol table. */ if (sym != NULL) - resolve_symbol_value (sym, 1); + resolve_symbol_value (sym); if (fixp->fx_subsy != NULL) - resolve_symbol_value (fixp->fx_subsy, 1); + resolve_symbol_value (fixp->fx_subsy); /* If this symbol is equated to an undefined symbol, convert the fixup to being against that symbol. */ - if (sym != NULL && symbol_equated_p (sym) - && (! S_IS_DEFINED (sym) || S_IS_COMMON (sym))) + if (sym != NULL && symbol_equated_reloc_p (sym)) { fixp->fx_offset += symbol_get_value_expression (sym)->X_add_number; sym = symbol_get_value_expression (sym)->X_add_symbol; @@ -865,6 +873,14 @@ adjust_reloc_syms (abfd, sec, xxx) symbol_mark_used_in_reloc (fixp->fx_addsy); goto done; } + + /* Never adjust a reloc against local symbol in a merge section + with non-zero addend. */ + if ((symsec->flags & SEC_MERGE) && fixp->fx_offset) + { + symbol_mark_used_in_reloc (fixp->fx_addsy); + goto done; + } #endif /* Is there some other reason we can't adjust this one? (E.g., @@ -967,11 +983,10 @@ write_relocs (abfd, sec, xxx) } /* If this is an undefined symbol which was equated to another - symbol, then use generate the reloc against the latter symbol + symbol, then generate the reloc against the latter symbol rather than the former. */ sym = fixp->fx_addsy; - while (symbol_equated_p (sym) - && (! S_IS_DEFINED (sym) || S_IS_COMMON (sym))) + while (symbol_equated_reloc_p (sym)) { symbolS *n; @@ -1043,8 +1058,7 @@ write_relocs (abfd, sec, xxx) symbol, then generate the reloc against the latter symbol rather than the former. */ sym = fixp->fx_addsy; - while (symbol_equated_p (sym) - && (! S_IS_DEFINED (sym) || S_IS_COMMON (sym))) + while (symbol_equated_reloc_p (sym)) sym = symbol_get_value_expression (sym)->X_add_symbol; fixp->fx_addsy = sym; @@ -1218,7 +1232,7 @@ write_contents (abfd, sec, xxx) (stdoutput, sec, buf, (file_ptr) offset, (bfd_size_type) n_per_buf * fill_size); if (x != true) - as_fatal (_("Cannot write to output file.")); + as_fatal (_("cannot write to output file")); offset += n_per_buf * fill_size; } } @@ -1352,7 +1366,7 @@ set_symtab () asymbol **asympp; symbolS *symp; boolean result; - extern PTR bfd_alloc PARAMS ((bfd *, size_t)); + extern PTR bfd_alloc PARAMS ((bfd *, bfd_size_type)); /* Count symbols. We can't rely on a count made by the loop in write_object_file, because *_frob_file may add a new symbol or @@ -1364,9 +1378,9 @@ set_symtab () if (nsyms) { int i; + bfd_size_type amt = (bfd_size_type) nsyms * sizeof (asymbol *); - asympp = (asymbol **) bfd_alloc (stdoutput, - nsyms * sizeof (asymbol *)); + asympp = (asymbol **) bfd_alloc (stdoutput, amt); symp = symbol_rootP; for (i = 0; i < nsyms; i++, symp = symbol_next (symp)) { @@ -1467,14 +1481,14 @@ write_object_file () if (flag_always_generate_output) { if (n_warns || n_errs) - as_warn (_("%d error%s, %d warning%s, generating bad object file.\n"), + as_warn (_("%d error%s, %d warning%s, generating bad object file"), n_errs, n_errs == 1 ? "" : "s", n_warns, n_warns == 1 ? "" : "s"); } else { if (n_errs) - as_fatal (_("%d error%s, %d warning%s, no object file generated.\n"), + as_fatal (_("%d error%s, %d warning%s, no object file generated"), n_errs, n_errs == 1 ? "" : "s", n_warns, n_warns == 1 ? "" : "s"); } @@ -1493,22 +1507,18 @@ write_object_file () #ifdef BFD_ASSEMBLER /* Remove the sections created by gas for its own purposes. */ { - asection **seclist, *sec; + asection **seclist; int i; seclist = &stdoutput->sections; - while (seclist && *seclist) + while (*seclist) { - sec = *seclist; - while (sec == reg_section || sec == expr_section) + if (*seclist == reg_section || *seclist == expr_section) { - sec = sec->next; - *seclist = sec; + bfd_section_list_remove (stdoutput, seclist); stdoutput->section_count--; - if (!sec) - break; } - if (*seclist) + else seclist = &(*seclist)->next; } i = 0; @@ -1533,13 +1543,53 @@ write_object_file () #endif #ifdef BFD_ASSEMBLER - bfd_map_over_sections (stdoutput, relax_seg, (char *) 1); - bfd_map_over_sections (stdoutput, relax_seg, (char *) 0); + while (1) + { + int changed; + +#ifndef WORKING_DOT_WORD + /* We need to reset the markers in the broken word list and + associated frags between calls to relax_segment (via + relax_seg). Since the broken word list is global, we do it + once per round, rather than locally in relax_segment for each + segment. */ + struct broken_word *brokp; + + for (brokp = broken_words; + brokp != (struct broken_word *) NULL; + brokp = brokp->next_broken_word) + { + brokp->added = 0; + + if (brokp->dispfrag != (fragS *) NULL + && brokp->dispfrag->fr_type == rs_broken_word) + brokp->dispfrag->fr_subtype = 0; + } +#endif + + changed = 0; + bfd_map_over_sections (stdoutput, relax_seg, &changed); + if (!changed) + break; + } + + /* Note - Most ports will use the default value of + TC_FINALIZE_SYMS_BEFORE_SIZE_SEG, which 1. This will force + local symbols to be resolved, removing their frag information. + Some ports however, will not have finished relaxing all of + their frags and will still need the local symbol frag + information. These ports can set + TC_FINALIZE_SYMS_BEFORE_SIZE_SEG to 0. */ + finalize_syms = TC_FINALIZE_SYMS_BEFORE_SIZE_SEG; + bfd_map_over_sections (stdoutput, size_seg, (char *) 0); #else relax_and_size_all_segments (); #endif /* BFD_ASSEMBLER */ + /* Relaxation has completed. Freeze all syms. */ + finalize_syms = 1; + #if defined (BFD_ASSEMBLER) && defined (OBJ_COFF) && defined (TE_GO32) /* Now that the segments have their final sizes, run through the sections and set their vma and lma. !BFD gas sets them, and BFD gas @@ -1694,9 +1744,6 @@ write_object_file () /* Patch the jump table. */ /* This is the offset from ??? to table_ptr+0. */ to_addr = table_addr - S_GET_VALUE (lie->sub); -#ifdef BFD_ASSEMBLER - to_addr -= symbol_get_frag (lie->sub)->fr_address; -#endif #ifdef TC_CHECK_ADJUSTED_BROKEN_DOT_WORD TC_CHECK_ADJUSTED_BROKEN_DOT_WORD (to_addr, lie); #endif @@ -1713,9 +1760,6 @@ write_object_file () /* This is a long jump from table_ptr+0 to the final target. */ from_addr = table_addr; to_addr = S_GET_VALUE (lie->add) + lie->addnum; -#ifdef BFD_ASSEMBLER - to_addr += symbol_get_frag (lie->add)->fr_address; -#endif md_create_long_jump (table_ptr, from_addr, to_addr, lie->dispfrag, lie->add); table_ptr += md_long_jump_size; @@ -1833,8 +1877,8 @@ write_object_file () obj_emit_strings (&next_object_file_charP); #ifdef BFD_HEADERS - bfd_seek (stdoutput, 0, 0); - bfd_write (the_object_file, 1, object_file_size, stdoutput); + bfd_seek (stdoutput, (file_ptr) 0, 0); + bfd_bwrite (the_object_file, (bfd_size_type) object_file_size, stdoutput); #else /* Write the data to the file. */ @@ -1858,7 +1902,7 @@ write_object_file () symbolS *symp; for (symp = symbol_rootP; symp; symp = symbol_next (symp)) - resolve_symbol_value (symp, 1); + resolve_symbol_value (symp); } resolve_local_symbol_values (); @@ -1900,18 +1944,17 @@ write_object_file () /* They only differ if `name' is a fb or dollar local label name. */ if (name2 != name && ! S_IS_DEFINED (symp)) - as_bad (_("local label %s is not defined"), name2); + as_bad (_("local label `%s' is not defined"), name2); } /* Do it again, because adjust_reloc_syms might introduce more symbols. They'll probably only be section symbols, but they'll still need to have the values computed. */ - resolve_symbol_value (symp, 1); + resolve_symbol_value (symp); /* Skip symbols which were equated to undefined or common symbols. */ - if (symbol_equated_p (symp) - && (! S_IS_DEFINED (symp) || S_IS_COMMON (symp))) + if (symbol_equated_reloc_p (symp)) { symbol_remove (symp, &symbol_rootP, &symbol_lastP); continue; @@ -1963,7 +2006,7 @@ write_object_file () /* Make sure we really got a value for the symbol. */ if (! symbol_resolved_p (symp)) { - as_bad (_("can't resolve value for symbol \"%s\""), + as_bad (_("can't resolve value for symbol `%s'"), S_GET_NAME (symp)); symbol_mark_resolved (symp); } @@ -2059,7 +2102,7 @@ relax_frag (segment, fragP, stretch) #endif know (!(S_GET_SEGMENT (symbolP) == absolute_section) || sym_frag == &zero_address_frag); - target += S_GET_VALUE (symbolP) + sym_frag->fr_address; + target += S_GET_VALUE (symbolP); /* If frag has yet to be reached on this pass, assume it will move by STRETCH just as we did. @@ -2157,13 +2200,15 @@ relax_align (address, alignment) these frag addresses may not be the same as final object-file addresses. */ -void +int relax_segment (segment_frag_root, segment) struct frag *segment_frag_root; segT segment; { register struct frag *fragP; register relax_addressT address; + int ret; + #if !defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER) know (segment == SEG_DATA || segment == SEG_TEXT || segment == SEG_BSS); #endif @@ -2196,8 +2241,9 @@ relax_segment (segment_frag_root, segment) if (offset % fragP->fr_var != 0) { - as_bad (_("alignment padding (%lu bytes) not a multiple of %ld"), - (unsigned long) offset, (long) fragP->fr_var); + as_bad_where (fragP->fr_file, fragP->fr_line, + _("alignment padding (%lu bytes) not a multiple of %ld"), + (unsigned long) offset, (long) fragP->fr_var); offset -= (offset % fragP->fr_var); } @@ -2211,6 +2257,12 @@ relax_segment (segment_frag_root, segment) break; case rs_machine_dependent: + /* If fr_symbol is an expression, this call to + resolve_symbol_value sets up the correct segment, which will + likely be needed in md_estimate_size_before_relax. */ + if (fragP->fr_symbol) + resolve_symbol_value (fragP->fr_symbol); + address += md_estimate_size_before_relax (fragP, segment); break; @@ -2297,21 +2349,20 @@ relax_segment (segment_frag_root, segment) if (lie->added) continue; - offset = (symbol_get_frag (lie->add)->fr_address - + S_GET_VALUE (lie->add) + offset = (S_GET_VALUE (lie->add) + lie->addnum - - (symbol_get_frag (lie->sub)->fr_address - + S_GET_VALUE (lie->sub))); + - S_GET_VALUE (lie->sub)); if (offset <= -32768 || offset >= 32767) { if (flag_warn_displacement) { char buf[50]; sprint_value (buf, (addressT) lie->addnum); - as_warn (_(".word %s-%s+%s didn't fit"), - S_GET_NAME (lie->add), - S_GET_NAME (lie->sub), - buf); + as_warn_where (fragP->fr_file, fragP->fr_line, + _(".word %s-%s+%s didn't fit"), + S_GET_NAME (lie->add), + S_GET_NAME (lie->sub), + buf); } lie->added = 1; if (fragP->fr_subtype == 0) @@ -2376,9 +2427,13 @@ relax_segment (segment_frag_root, segment) know (!(S_GET_SEGMENT (symbolP) == SEG_ABSOLUTE) || (symbolP->sy_frag == &zero_address_frag)); #endif - target += (S_GET_VALUE (symbolP) - + symbol_get_frag (symbolP)->fr_address); - } /* if we have a symbol */ + /* Convert from an actual address to an octet offset + into the section. Here it is assumed that the + section's VMA is zero, and can omit subtracting it + from the symbol's value to get the address offset. */ + know (S_GET_SECTION (symbolP)->vma == 0); + target += S_GET_VALUE (symbolP) * OCTETS_PER_BYTE; + } know (fragP->fr_next); after = fragP->fr_next->fr_address; @@ -2389,7 +2444,7 @@ relax_segment (segment_frag_root, segment) cannot have fewer than 0 chars. That is, we can't .org backwards. */ as_bad_where (fragP->fr_file, fragP->fr_line, - _("attempt to .org backwards ignored")); + _("attempt to .org backwards")); /* We've issued an error message. Change the frag to avoid cascading errors. */ @@ -2406,23 +2461,31 @@ relax_segment (segment_frag_root, segment) } case rs_space: + growth = 0; if (symbolP) { - growth = S_GET_VALUE (symbolP); - if (symbol_get_frag (symbolP) != &zero_address_frag + offsetT amount; + + amount = S_GET_VALUE (symbolP); + if (S_GET_SEGMENT (symbolP) != absolute_section || S_IS_COMMON (symbolP) || ! S_IS_DEFINED (symbolP)) - as_bad_where (fragP->fr_file, fragP->fr_line, - _(".space specifies non-absolute value")); - fragP->fr_symbol = 0; - if (growth < 0) { - as_warn (_(".space or .fill with negative value, ignored")); - growth = 0; + as_bad_where (fragP->fr_file, fragP->fr_line, + _(".space specifies non-absolute value")); + /* Prevent repeat of this error message. */ + fragP->fr_symbol = 0; } + else if (amount < 0) + { + as_warn_where (fragP->fr_file, fragP->fr_line, + _(".space or .fill with negative value, ignored")); + fragP->fr_symbol = 0; + } + else + growth = (was_address + fragP->fr_fix + amount + - fragP->fr_next->fr_address); } - else - growth = 0; break; case rs_machine_dependent: @@ -2442,7 +2505,7 @@ relax_segment (segment_frag_root, segment) valueT value; int size; - value = resolve_symbol_value (fragP->fr_symbol, 0); + value = resolve_symbol_value (fragP->fr_symbol); size = sizeof_leb128 (value, fragP->fr_subtype); growth = size - fragP->fr_offset; fragP->fr_offset = size; @@ -2471,10 +2534,14 @@ relax_segment (segment_frag_root, segment) while (stretched); /* Until nothing further to relax. */ } /* do_relax */ - /* We now have valid fr_address'es for each frag. */ - - /* All fr_address's are correct, relative to their own segment. - We have made all the fixS we will ever make. */ + ret = 0; + for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next) + if (fragP->last_fr_address != fragP->fr_address) + { + fragP->last_fr_address = fragP->fr_address; + ret = 1; + } + return ret; } #if defined (BFD_ASSEMBLER) || (!defined (BFD) && !defined (OBJ_VMS)) @@ -2488,7 +2555,7 @@ relax_segment (segment_frag_root, segment) Go through all the fixS's in a segment and see which ones can be handled now. (These consist of fixS where we have since discovered the value of a symbol, or the address of the frag involved.) - For each one, call md_apply_fix to put the fix into the frag data. + For each one, call md_apply_fix3 to put the fix into the frag data. Result is a count of how many relocation structs will be needed to handle the remaining fixS's that we couldn't completely handle here. @@ -2561,7 +2628,7 @@ fixup_segment (fixP, this_segment_type) if (sub_symbolP) { - resolve_symbol_value (sub_symbolP, 1); + resolve_symbol_value (sub_symbolP); if (add_symbolP == NULL || add_symbol_segment == absolute_section) { if (add_symbolP != NULL) @@ -2586,7 +2653,7 @@ fixup_segment (fixP, this_segment_type) else bad_sub_reloc: as_bad_where (fixP->fx_file, fixP->fx_line, - _("Negative of non-absolute symbol %s"), + _("negative of non-absolute symbol `%s'"), S_GET_NAME (sub_symbolP)); } else if (S_GET_SEGMENT (sub_symbolP) == add_symbol_segment @@ -2600,10 +2667,17 @@ fixup_segment (fixP, this_segment_type) as the target of a call instruction. */ if (fixP->fx_tcbit) as_bad_where (fixP->fx_file, fixP->fx_line, - _("callj to difference of 2 symbols")); + _("callj to difference of two symbols")); #endif /* TC_I960 */ - add_number += S_GET_VALUE (add_symbolP) - - S_GET_VALUE (sub_symbolP); + add_number += (S_GET_VALUE (add_symbolP) + - S_GET_VALUE (sub_symbolP)); + if (1 +#ifdef TC_M68K + /* See the comment below about 68k weirdness. */ + && 0 +#endif + && pcrel) + add_number -= MD_PCREL_FROM_SECTION (fixP, this_segment_type); add_symbolP = NULL; pcrel = 0; /* No further pcrel processing. */ @@ -2628,21 +2702,26 @@ fixup_segment (fixP, this_segment_type) add_number -= S_GET_VALUE (sub_symbolP); #ifdef DIFF_EXPR_OK - else if (S_GET_SEGMENT (sub_symbolP) == this_segment_type -#if 0 - /* Do this even if it's already described as - pc-relative. For example, on the m68k, an - operand of "pc@(foo-.-2)" should address - "foo" in a pc-relative mode. */ - && pcrel -#endif - ) + else if (S_GET_SEGMENT (sub_symbolP) == this_segment_type) { /* Make it pc-relative. */ - add_number += (MD_PCREL_FROM_SECTION (fixP, this_segment_type) - - S_GET_VALUE (sub_symbolP)); - pcrel = 1; - fixP->fx_pcrel = 1; + if (0 +#ifdef TC_M68K + /* Do this for m68k even if it's already described + as pc-relative. On the m68k, an operand of + "pc@(foo-.-2)" should address "foo" in a + pc-relative mode. */ + || 1 +#endif + || !pcrel) + { + add_number += MD_PCREL_FROM_SECTION (fixP, + this_segment_type); + pcrel = 1; + fixP->fx_pcrel = 1; + } + + add_number -= S_GET_VALUE (sub_symbolP); sub_symbolP = 0; fixP->fx_subsy = 0; } @@ -2668,7 +2747,7 @@ fixup_segment (fixP, this_segment_type) char buf[50]; sprint_value (buf, fragP->fr_address + where); as_bad_where (fixP->fx_file, fixP->fx_line, - _("Subtraction of two symbols in different sections \"%s\" {%s section} - \"%s\" {%s section} at file address %s."), + _("subtraction of two symbols in different sections `%s' {%s section} - `%s' {%s section} at file address %s"), S_GET_NAME (add_symbolP), segment_name (S_GET_SEGMENT (add_symbolP)), S_GET_NAME (sub_symbolP), @@ -2784,25 +2863,7 @@ fixup_segment (fixP, this_segment_type) } if (!fixP->fx_done) - { -#ifdef MD_APPLY_FIX3 - md_apply_fix3 (fixP, &add_number, this_segment_type); -#else -#ifdef BFD_ASSEMBLER - md_apply_fix (fixP, &add_number); -#else - md_apply_fix (fixP, add_number); -#endif -#endif - -#ifndef TC_HANDLES_FX_DONE - /* If the tc-* files haven't been converted, assume it's handling - it the old way, where a null fx_addsy means that the fix has - been applied completely, and no further work is needed. */ - if (fixP->fx_addsy == 0 && fixP->fx_pcrel == 0) - fixP->fx_done = 1; -#endif - } + md_apply_fix3 (fixP, & add_number, this_segment_type); if (!fixP->fx_bit_fixP && !fixP->fx_no_overflow && size > 0) { @@ -2822,7 +2883,7 @@ fixup_segment (fixP, this_segment_type) else sprintf (buf2, "%ld", (long) add_number); as_bad_where (fixP->fx_file, fixP->fx_line, - _("Value of %s too large for field of %d bytes at %s"), + _("value of %s too large for field of %d bytes at %s"), buf2, size, buf); } /* Generic error checking. */ } @@ -2834,7 +2895,7 @@ fixup_segment (fixP, this_segment_type) && size == 2 && add_number > 0x7fff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Signed .word overflow; switch may be too large; %ld at 0x%lx"), + _("signed .word overflow; switch may be too large; %ld at 0x%lx"), (long) add_number, (unsigned long) (fragP->fr_address + where)); #endif diff --git a/contrib/binutils/gas/write.h b/contrib/binutils/gas/write.h index 5bab7a2..451215d 100644 --- a/contrib/binutils/gas/write.h +++ b/contrib/binutils/gas/write.h @@ -157,6 +157,8 @@ struct fix typedef struct fix fixS; +extern int finalize_syms; + #ifndef BFD_ASSEMBLER extern char *next_object_file_charP; @@ -182,7 +184,7 @@ extern int get_recorded_alignment PARAMS ((segT seg)); extern void subsegs_finish PARAMS ((void)); extern void write_object_file PARAMS ((void)); extern long relax_frag PARAMS ((segT, fragS *, long)); -extern void relax_segment +extern int relax_segment PARAMS ((struct frag * seg_frag_root, segT seg_type)); extern void number_to_chars_littleendian PARAMS ((char *, valueT, int)); |