diff options
author | Nick Clifton <nickc@redhat.com> | 2000-06-19 01:22:44 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2000-06-19 01:22:44 +0000 |
commit | 60bcf0fa8c115b4e71d7b1372aca3efccffc9607 (patch) | |
tree | 9592b86c1082c3cc81770da7e04068973b781af0 /gas | |
parent | 58781cd0ba8aed9244e6b17b60cb1a3cf005faf2 (diff) | |
download | gdb-60bcf0fa8c115b4e71d7b1372aca3efccffc9607.zip gdb-60bcf0fa8c115b4e71d7b1372aca3efccffc9607.tar.gz gdb-60bcf0fa8c115b4e71d7b1372aca3efccffc9607.tar.bz2 |
Applied Stephane Carrez <Stephane.Carrez@worldnet.fr> patches to add support
for m68hc11 and m68hc12 processors.
Diffstat (limited to 'gas')
29 files changed, 6077 insertions, 1143 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 092f385..7f7da64 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,16 @@ +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 diff --git a/gas/Makefile.am b/gas/Makefile.am index 435a4da..f195102 100644 --- a/gas/Makefile.am +++ b/gas/Makefile.am @@ -54,6 +54,7 @@ CPU_TYPES = \ i860 \ i960 \ m32r \ + m68hc11 \ m68k \ m88k \ mcore \ @@ -225,6 +226,7 @@ TARGET_CPU_CFILES = \ config/tc-i860.c \ config/tc-i960.c \ config/tc-m32r.c \ + config/tc-m68hc11.c \ config/tc-m68k.c \ config/tc-m88k.c \ config/tc-mcore.c \ @@ -262,6 +264,7 @@ TARGET_CPU_HFILES = \ config/tc-i860.h \ config/tc-i960.h \ config/tc-m32r.h \ + config/tc-m68hc11.h \ config/tc-m68k.h \ config/tc-m88k.h \ config/tc-mcore.h \ @@ -1087,6 +1090,11 @@ DEPTC_m32r_elf = $(INCDIR)/bin-bugs.h $(INCDIR)/progress.h \ $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \ cgen.h +DEPTC_m68hc11_elf = $(INCDIR)/bin-bugs.h $(INCDIR)/progress.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)/obstack.h \ + subsegs.h $(INCDIR)/opcode/m68hc11.h DEPTC_m68k_aout = $(INCDIR)/bin-bugs.h $(INCDIR)/progress.h \ $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \ @@ -1814,6 +1822,9 @@ DEP_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.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_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_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 \ diff --git a/gas/Makefile.in b/gas/Makefile.in index ed54b62..587a390 100644 --- a/gas/Makefile.in +++ b/gas/Makefile.in @@ -158,6 +158,7 @@ CPU_TYPES = \ i860 \ i960 \ m32r \ + m68hc11 \ m68k \ m88k \ mcore \ @@ -335,6 +336,7 @@ TARGET_CPU_CFILES = \ config/tc-i860.c \ config/tc-i960.c \ config/tc-m32r.c \ + config/tc-m68hc11.c \ config/tc-m68k.c \ config/tc-m88k.c \ config/tc-mcore.c \ @@ -373,6 +375,7 @@ TARGET_CPU_HFILES = \ config/tc-i860.h \ config/tc-i960.h \ config/tc-m32r.h \ + config/tc-m68hc11.h \ config/tc-m68k.h \ config/tc-m88k.h \ config/tc-mcore.h \ @@ -837,6 +840,12 @@ DEPTC_m32r_elf = $(INCDIR)/bin-bugs.h $(INCDIR)/progress.h \ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \ cgen.h +DEPTC_m68hc11_elf = $(INCDIR)/bin-bugs.h $(INCDIR)/progress.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)/obstack.h \ + subsegs.h $(INCDIR)/opcode/m68hc11.h + DEPTC_m68k_aout = $(INCDIR)/bin-bugs.h $(INCDIR)/progress.h \ $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \ @@ -1742,6 +1751,10 @@ 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_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_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h @@ -1958,7 +1971,7 @@ configure configure.in gdbinit.in itbl-lex.c itbl-parse.c DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar +TAR = gtar GZIP_ENV = --best SOURCES = $(itbl_test_SOURCES) $(as_new_SOURCES) $(EXTRA_as_new_SOURCES) $(gasp_new_SOURCES) OBJECTS = $(itbl_test_OBJECTS) $(as_new_OBJECTS) $(gasp_new_OBJECTS) diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index 3af8c9a..1c481a6 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -833,7 +833,7 @@ obj_elf_section (push) char mri_type; #ifdef md_flush_pending_output - md_flush_pending_output (); + md_flush_pending_output (); #endif previous_section = now_seg; diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 395b50f..37fe3d8 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -145,7 +145,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)) /* Putting '/' here makes it impossible to use the divide operator. However, we need it for compatibility with SVR4 systems. */ const char comment_chars[] = "#/"; @@ -163,7 +163,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)) const char line_comment_chars[] = ""; #else const char line_comment_chars[] = "/"; @@ -1021,7 +1021,7 @@ reloc (size, pcrel, other) */ int tc_i386_fix_adjustable (fixP) - fixS *fixP; + fixS * fixP; { #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) || defined (TE_PE) /* Prevent all adjustments to global symbols, or else dynamic diff --git a/gas/config/tc-m32r.c b/gas/config/tc-m32r.c index 7745338..bce1209 100644 --- a/gas/config/tc-m32r.c +++ b/gas/config/tc-m32r.c @@ -1882,6 +1882,9 @@ m32r_elf_section_change_hook () (void) m32r_fill_insn (0); } +/* Return true if can adjust the reloc to be relative to its section + (such as .data) instead of relative to some symbol. */ + boolean m32r_fix_adjustable (fixP) fixS *fixP; @@ -1901,13 +1904,13 @@ m32r_fix_adjustable (fixP) if (fixP->fx_addsy == NULL) return 1; - + /* Prevent all adjustments to global symbols. */ if (S_IS_EXTERN (fixP->fx_addsy)) return 0; if (S_IS_WEAK (fixP->fx_addsy)) return 0; - + /* We need the symbol name for the VTABLE entries */ if (reloc_type == BFD_RELOC_VTABLE_INHERIT || reloc_type == BFD_RELOC_VTABLE_ENTRY) diff --git a/gas/config/tc-m68hc11.c b/gas/config/tc-m68hc11.c new file mode 100644 index 0000000..e773420 --- /dev/null +++ b/gas/config/tc-m68hc11.c @@ -0,0 +1,2831 @@ +/* tc-m68hc11.c -- Assembler code for the Motorola 68HC11 & 68HC12. + Copyright (C) 1999, 2000 Free Software Foundation. + Written by Stephane Carrez (stcarrez@worldnet.fr) + + This file is part of GAS, the GNU Assembler. + + GAS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GAS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + 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. */ + +#include <stdio.h> +#include <ctype.h> +#include "as.h" +#include "subsegs.h" +#include "opcode/m68hc11.h" +#include "dwarf2dbg.h" + +struct dwarf2_line_info debug_line; + +const char comment_chars[] = ";!"; +const char line_comment_chars[] = "#*"; +const char line_separator_chars[] = ""; + +const char EXP_CHARS[] = "eE"; +const char FLT_CHARS[] = "dD"; + +#define STATE_CONDITIONAL_BRANCH (1) +#define STATE_PC_RELATIVE (2) +#define STATE_INDEXED_OFFSET (3) +#define STATE_XBCC_BRANCH (4) +#define STATE_CONDITIONAL_BRANCH_6812 (5) + +#define STATE_BYTE (0) +#define STATE_BITS5 (0) +#define STATE_WORD (1) +#define STATE_BITS9 (1) +#define STATE_LONG (2) +#define STATE_BITS16 (2) +#define STATE_UNDF (3) /* Symbol undefined in pass1 */ + +/* This macro has no side-effects. */ +#define ENCODE_RELAX(what,length) (((what) << 2) + (length)) + +#define IS_OPCODE(C1,C2) (((C1) & 0x0FF) == ((C2) & 0x0FF)) + +/* This table describes how you change sizes for the various types of variable + size expressions. This version only supports two kinds. */ + +/* The fields are: + How far Forward this mode will reach: + How far Backward this mode will reach: + How many bytes this mode will add to the size of the frag + Which mode to go to if the offset won't fit in this one */ + +relax_typeS md_relax_table[] = { + {1, 1, 0, 0}, /* First entries aren't used */ + {1, 1, 0, 0}, /* For no good reason except */ + {1, 1, 0, 0}, /* that the VAX doesn't either */ + {1, 1, 0, 0}, + + /* Relax for bcc <L>. + These insns are translated into b!cc +3 jmp L. */ + {(127), (-128), 0, ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD)}, + {0, 0, 3, 0}, + {1, 1, 0, 0}, + {1, 1, 0, 0}, + + /* Relax for bsr <L> and bra <L>. + These insns are translated into jsr and jmp. */ + {(127), (-128), 0, ENCODE_RELAX (STATE_PC_RELATIVE, STATE_WORD)}, + {0, 0, 1, 0}, + {1, 1, 0, 0}, + {1, 1, 0, 0}, + + /* Relax for indexed offset: 5-bits, 9-bits, 16-bits. */ + {(15), (-16), 0, ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_BITS9)}, + {(255), (-256), 1, ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_BITS16)}, + {0, 0, 1, 0}, + {1, 1, 0, 0}, + + /* Relax for dbeq/ibeq/tbeq r,<L>: + These insns are translated into db!cc +3 jmp L. */ + {(255), (-256), 0, ENCODE_RELAX (STATE_XBCC_BRANCH, STATE_WORD)}, + {0, 0, 3, 0}, + {1, 1, 0, 0}, + {1, 1, 0, 0}, + + /* Relax for bcc <L> on 68HC12. + These insns are translated into lbcc <L>. */ + {(127), (-128), 0, ENCODE_RELAX (STATE_CONDITIONAL_BRANCH_6812, STATE_WORD)}, + {0, 0, 2, 0}, + {1, 1, 0, 0}, + {1, 1, 0, 0}, + +}; + +/* 68HC11 and 68HC12 registers. They are numbered according to the 68HC12. */ +typedef enum register_id +{ + REG_NONE = -1, + REG_A = 0, + REG_B = 1, + REG_CCR = 2, + REG_D = 4, + REG_X = 5, + REG_Y = 6, + REG_SP = 7, + REG_PC = 8 +} register_id; + +typedef struct operand +{ + expressionS exp; + register_id reg1; + register_id reg2; + int mode; +} operand; + +struct m68hc11_opcode_def +{ + long format; + int min_operands; + int max_operands; + int nb_modes; + int used; + struct m68hc11_opcode *opcode; +}; + +static struct m68hc11_opcode_def *m68hc11_opcode_defs = 0; +static int m68hc11_nb_opcode_defs = 0; + +typedef struct alias +{ + const char *name; + const char *alias; +} +alias; + +static alias alias_opcodes[] = { + {"cpd", "cmpd"}, + {"cpx", "cmpx"}, + {"cpy", "cmpy"}, + {0, 0} +}; + +/* local functions */ +static register_id reg_name_search PARAMS ((char *name)); +static register_id register_name PARAMS (()); +static int check_range PARAMS ((long num, int mode)); + +static void print_opcode_list PARAMS ((void)); + +static void get_default_target PARAMS ((void)); +static void print_insn_format PARAMS ((char *name)); +static int get_operand PARAMS ((operand * op, int first, long opmode)); +static void fixup8 PARAMS ((expressionS * oper, int mode, int opmode)); +static void fixup16 PARAMS ((expressionS * oper, int mode, int opmode)); +static struct m68hc11_opcode *find_opcode +PARAMS ( + (struct m68hc11_opcode_def * opc, operand operands[], + int *nb_operands)); +static void build_jump_insn +PARAMS ( + (struct m68hc11_opcode * opcode, operand operands[], int nb_operands, + int optimize)); + +static void build_insn PARAMS ((struct m68hc11_opcode * opcode, + operand operands[], int nb_operands)); + +/* Controls whether relative branches can be turned into long branches. + When the relative offset is too large, the insn are changed: + bra -> jmp + bsr -> jsr + bcc -> b!cc +3 + jmp L + dbcc -> db!cc +3 + jmp L + + Setting the flag forbidds this. */ +static short flag_fixed_branchs = 0; + +/* Force to use long jumps (absolute) instead of relative branches. */ +static short flag_force_long_jumps = 0; + +/* Change the direct addressing mode into an absolute addressing mode + when the insn does not support direct addressing. + For example, "clr *ZD0" is normally not possible and is changed + into "clr ZDO". */ +static short flag_strict_direct_addressing = 1; + +/* When an opcode has invalid operand, print out the syntax of the opcode + to stderr. */ +static short flag_print_insn_syntax = 0; + +/* Dumps the list of instructions with syntax and then exit: + 1 -> Only dumps the list (sorted by name) + 2 -> Generate an example (or test) that can be compiled. */ +static short flag_print_opcodes = 0; + +/* Opcode hash table. */ +static struct hash_control *m68hc11_hash; + +/* Current cpu (either cpu6811 or cpu6812). This is determined automagically + by 'get_default_target' by looking at default BFD vector. This is overriden + with the -m<cpu> option. */ +static int current_architecture = 0; + +/* Default cpu determined by 'get_default_target'. */ +static const char *default_cpu; + +/* Number of opcodes in the sorted table (filtered by current cpu). */ +static int num_opcodes; + +/* The opcodes sorted by name and filtered by current cpu. */ +static struct m68hc11_opcode *m68hc11_sorted_opcodes; + +/* These are the machine dependent pseudo-ops. These are included so + the assembler can work on the output from the SUN C compiler, which + generates these. */ + +/* This table describes all the machine specific pseudo-ops the assembler + has to support. The fields are: + pseudo-op name without dot + function to call to execute this pseudo-op + Integer arg to pass to the function. */ +const pseudo_typeS md_pseudo_table[] = { + /* The following pseudo-ops are supported for MRI compatibility. */ + {"fcb", cons, 1}, + {"fdb", cons, 2}, + {"fcc", stringer, 1}, + {"rmb", s_space, 0}, + {"file", dwarf2_directive_file, 0}, + {"loc", dwarf2_directive_loc, 0}, + + {0, 0, 0} +}; + + +/* Options and initialization. */ + +CONST char *md_shortopts = "Sm:"; + +struct option md_longopts[] = { +#define OPTION_FORCE_LONG_BRANCH (OPTION_MD_BASE) + {"force-long-branchs", no_argument, NULL, OPTION_FORCE_LONG_BRANCH}, + +#define OPTION_SHORT_BRANCHS (OPTION_MD_BASE + 1) + {"short-branchs", no_argument, NULL, OPTION_SHORT_BRANCHS}, + +#define OPTION_STRICT_DIRECT_MODE (OPTION_MD_BASE + 2) + {"strict-direct-mode", no_argument, NULL, OPTION_STRICT_DIRECT_MODE}, + +#define OPTION_PRINT_INSN_SYNTAX (OPTION_MD_BASE + 3) + {"print-insn-syntax", no_argument, NULL, OPTION_PRINT_INSN_SYNTAX}, + +#define OPTION_PRINT_OPCODES (OPTION_MD_BASE + 4) + {"print-opcodes", no_argument, NULL, OPTION_PRINT_OPCODES}, + +#define OPTION_GENERATE_EXAMPLE (OPTION_MD_BASE + 5) + {"generate-example", no_argument, NULL, OPTION_GENERATE_EXAMPLE}, + + {NULL, no_argument, NULL, 0} +}; +size_t md_longopts_size = sizeof (md_longopts); + +/* Get the target cpu for the assembler. This is based on the configure + options and on the -m68hc11/-m68hc12 option. If no option is specified, + we must get the default. */ +const char * +m68hc11_arch_format () +{ + get_default_target (); + if (current_architecture & cpu6811) + return "elf32-m68hc11"; + else + return "elf32-m68hc12"; +} + +enum bfd_architecture +m68hc11_arch () +{ + get_default_target (); + if (current_architecture & cpu6811) + return bfd_arch_m68hc11; + else + return bfd_arch_m68hc12; +} + +int +m68hc11_mach () +{ + return 0; +} + + +void +md_show_usage (stream) + FILE *stream; +{ + get_default_target (); + fprintf (stream, _("\ +Motorola 68HC11/68HC12 options:\n\ + -m68hc11 | -m68hc12 specify the processor [default %s]\n\ + --force-long-branchs always turn relative branchs into absolute ones\n\ + -S,--short-branchs do not turn relative branchs into absolute ones\n\ + when the offset is out of range\n\ + --strict-direct-mode do not turn the direct mode into extended mode\n\ + when the instruction does not support direct mode\n\ + --print-insn-syntax print the syntax of instruction in case of error\n\ + --print-opcodes print the list of instructions with syntax\n\ + --generate-example generate an example of each instruction\n\ + (used for testing)\n"), default_cpu); + +} + +/* Try to identify the default target based on the BFD library. */ +static void +get_default_target () +{ + const bfd_target *target; + bfd abfd; + + if (current_architecture != 0) + return; + + default_cpu = "unknown"; + target = bfd_find_target (0, &abfd); + if (target && target->name) + { + if (strcmp (target->name, "elf32-m68hc12") == 0) + { + current_architecture = cpu6812; + default_cpu = "m68hc12"; + } + else if (strcmp (target->name, "elf32-m68hc11") == 0) + { + current_architecture = cpu6811; + default_cpu = "m68hc11"; + } + else + { + as_bad (_("Default target `%s' is not supported."), target->name); + } + } +} + +void +m68hc11_print_statistics (file) + FILE *file; +{ + int i; + struct m68hc11_opcode_def *opc; + + hash_print_statistics (file, "opcode table", m68hc11_hash); + + opc = m68hc11_opcode_defs; + if (opc == 0 || m68hc11_nb_opcode_defs == 0) + return; + + /* Dump the opcode statistics table. */ + fprintf (file, _("Name # Modes Min ops Max ops Modes mask # Used\n")); + for (i = 0; i < m68hc11_nb_opcode_defs; i++, opc++) + { + fprintf (file, "%-7.7s %5d %7d %7d 0x%08lx %7d\n", + opc->opcode->name, + opc->nb_modes, + opc->min_operands, opc->max_operands, opc->format, opc->used); + } +} + +int +md_parse_option (c, arg) + int c; + char *arg; +{ + get_default_target (); + switch (c) + { + /* -S means keep external to 2 bits offset rather than 16 bits one. */ + case OPTION_SHORT_BRANCHS: + case 'S': + flag_fixed_branchs = 1; + break; + + case OPTION_FORCE_LONG_BRANCH: + flag_force_long_jumps = 1; + break; + + case OPTION_PRINT_INSN_SYNTAX: + flag_print_insn_syntax = 1; + break; + + case OPTION_PRINT_OPCODES: + flag_print_opcodes = 1; + break; + + case OPTION_STRICT_DIRECT_MODE: + flag_strict_direct_addressing = 0; + break; + + case OPTION_GENERATE_EXAMPLE: + flag_print_opcodes = 2; + break; + + case 'm': + if (strcasecmp (arg, "68hc11") == 0) + current_architecture = cpu6811; + else if (strcasecmp (arg, "68hc12") == 0) + current_architecture = cpu6812; + else + as_bad (_("Option `%s' is not recognized."), arg); + break; + + default: + return 0; + } + + return 1; +} + +symbolS * +md_undefined_symbol (name) + char *name ATTRIBUTE_UNUSED; +{ + return 0; +} + +/* Equal to MAX_PRECISION in atof-ieee.c */ +#define MAX_LITTLENUMS 6 + +/* Turn a string in input_line_pointer into a floating point constant + of type type, and store the appropriate bytes in *litP. The number + of LITTLENUMS emitted is stored in *sizeP . An error message is + returned, or NULL on OK. */ + +char * +md_atof (type, litP, sizeP) + char type; + char *litP; + int *sizeP; +{ + int prec; + LITTLENUM_TYPE words[MAX_LITTLENUMS]; + LITTLENUM_TYPE *wordP; + char *t; + + switch (type) + { + case 'f': + case 'F': + case 's': + case 'S': + prec = 2; + break; + + case 'd': + case 'D': + case 'r': + case 'R': + prec = 4; + break; + + case 'x': + case 'X': + prec = 6; + break; + + case 'p': + case 'P': + prec = 6; + break; + + default: + *sizeP = 0; + return _("Bad call to MD_ATOF()"); + } + t = atof_ieee (input_line_pointer, type, words); + if (t) + input_line_pointer = t; + + *sizeP = prec * sizeof (LITTLENUM_TYPE); + for (wordP = words; prec--;) + { + md_number_to_chars (litP, (long) (*wordP++), sizeof (LITTLENUM_TYPE)); + litP += sizeof (LITTLENUM_TYPE); + } + return 0; +} + +valueT +md_section_align (seg, addr) + asection *seg; + valueT addr; +{ + int align = bfd_get_section_alignment (stdoutput, seg); + return ((addr + (1 << align) - 1) & (-1 << align)); +} + + +static int +cmp_opcode (op1, op2) + struct m68hc11_opcode *op1; + struct m68hc11_opcode *op2; +{ + return strcmp (op1->name, op2->name); +} + +/* Initialize the assembler. Create the opcode hash table + (sorted on the names) with the M6811 opcode table + (from opcode library). */ +void +md_begin () +{ + char *prev_name = ""; + struct m68hc11_opcode *opcodes; + struct m68hc11_opcode_def *opc = 0; + int i, j; + + get_default_target (); + + m68hc11_hash = hash_new (); + + /* Get a writable copy of the opcode table and sort it on the names. */ + opcodes = (struct m68hc11_opcode *) xmalloc (m68hc11_num_opcodes * + sizeof (struct + m68hc11_opcode)); + m68hc11_sorted_opcodes = opcodes; + num_opcodes = 0; + for (i = 0; i < m68hc11_num_opcodes; i++) + { + if (m68hc11_opcodes[i].arch & current_architecture) + { + opcodes[num_opcodes] = m68hc11_opcodes[i]; + if (opcodes[num_opcodes].name[0] == 'b' + && opcodes[num_opcodes].format & M6811_OP_JUMP_REL + && !(opcodes[num_opcodes].format & M6811_OP_BITMASK)) + { + num_opcodes++; + opcodes[num_opcodes] = m68hc11_opcodes[i]; + } + num_opcodes++; + for (j = 0; alias_opcodes[j].name != 0; j++) + if (strcmp (m68hc11_opcodes[i].name, alias_opcodes[j].name) == 0) + { + opcodes[num_opcodes] = m68hc11_opcodes[i]; + opcodes[num_opcodes].name = alias_opcodes[j].alias; + num_opcodes++; + break; + } + } + } + qsort (opcodes, num_opcodes, sizeof (struct m68hc11_opcode), cmp_opcode); + + opc = (struct m68hc11_opcode_def *) + xmalloc (num_opcodes * sizeof (struct m68hc11_opcode_def)); + m68hc11_opcode_defs = opc--; + + /* Insert unique names into hash table. The M6811 instruction set + has several identical opcode names that have different opcodes based + on the operands. This hash table then provides a quick index to + the first opcode with a particular name in the opcode table. */ + for (i = 0; i < num_opcodes; i++, opcodes++) + { + int expect; + + if (strcmp (prev_name, opcodes->name)) + { + prev_name = (char *) opcodes->name; + + opc++; + opc->format = 0; + opc->min_operands = 100; + opc->max_operands = 0; + opc->nb_modes = 0; + opc->opcode = opcodes; + opc->used = 0; + hash_insert (m68hc11_hash, opcodes->name, (char *) opc); + } + opc->nb_modes++; + opc->format |= opcodes->format; + + /* See how many operands this opcode needs. */ + expect = 0; + if (opcodes->format & M6811_OP_MASK) + expect++; + if (opcodes->format & M6811_OP_BITMASK) + expect++; + if (opcodes->format & (M6811_OP_JUMP_REL | M6812_OP_JUMP_REL16)) + expect++; + if (opcodes->format & (M6812_OP_IND16_P2 | M6812_OP_IDX_P2)) + expect++; + + if (expect < opc->min_operands) + opc->min_operands = expect; + if (expect > opc->max_operands) + opc->max_operands = expect; + } + opc++; + m68hc11_nb_opcode_defs = opc - m68hc11_opcode_defs; + + if (flag_print_opcodes) + { + print_opcode_list (); + exit (EXIT_SUCCESS); + } +} + +void +m68hc11_init_after_args () +{ +} + + +/* Builtin help. */ + +/* Return a string that represents the operand format for the instruction. + When example is true, this generates an example of operand. This is used + to give an example and also to generate a test. */ +static char * +print_opcode_format (opcode, example) + struct m68hc11_opcode *opcode; + int example; +{ + static char buf[128]; + int format = opcode->format; + char *p; + + p = buf; + buf[0] = 0; + if (format & M6811_OP_IMM8) + { + if (example) + sprintf (p, "#%d", rand () & 0x0FF); + else + strcpy (p, _("#<imm8>")); + p = &p[strlen (p)]; + } + + if (format & M6811_OP_IMM16) + { + if (example) + sprintf (p, "#%d", rand () & 0x0FFFF); + else + strcpy (p, _("#<imm16>")); + p = &p[strlen (p)]; + } + + if (format & M6811_OP_IX) + { + if (example) + sprintf (p, "%d,X", rand () & 0x0FF); + else + strcpy (p, _("<imm8>,X")); + p = &p[strlen (p)]; + } + + if (format & M6811_OP_IY) + { + if (example) + sprintf (p, "%d,X", rand () & 0x0FF); + else + strcpy (p, _("<imm8>,X")); + p = &p[strlen (p)]; + } + + if (format & M6812_OP_IDX) + { + if (example) + sprintf (p, "%d,X", rand () & 0x0FF); + else + strcpy (p, "n,r"); + p = &p[strlen (p)]; + } + + if (format & M6811_OP_DIRECT) + { + if (example) + sprintf (p, "*Z%d", rand () & 0x0FF); + else + strcpy (p, _("*<abs8>")); + p = &p[strlen (p)]; + } + + if (format & M6811_OP_BITMASK) + { + if (buf[0]) + *p++ = ' '; + + if (example) + sprintf (p, "#$%02x", rand () & 0x0FF); + else + strcpy (p, _("#<mask>")); + + p = &p[strlen (p)]; + if (format & M6811_OP_JUMP_REL) + *p++ = ' '; + } + + if (format & M6811_OP_IND16) + { + if (example) + sprintf (p, _("symbol%d"), rand () & 0x0FF); + else + strcpy (p, _("<abs>")); + + p = &p[strlen (p)]; + } + + if (format & (M6811_OP_JUMP_REL | M6812_OP_JUMP_REL16)) + { + if (example) + { + if (format & M6811_OP_BITMASK) + { + sprintf (p, ".+%d", rand () & 0x7F); + } + else + { + sprintf (p, "L%d", rand () & 0x0FF); + } + } + else + strcpy (p, _("<label>")); + } + + return buf; +} + +/* Prints the list of instructions with the possible operands. */ +static void +print_opcode_list () +{ + int i; + char *prev_name = ""; + struct m68hc11_opcode *opcodes; + int example = flag_print_opcodes == 2; + + if (example) + { + printf (_("# Example of `%s' instructions\n\t.sect .text\n_start:\n"), + default_cpu); + } + + opcodes = m68hc11_sorted_opcodes; + + /* Walk the list sorted on names (by md_begin). We only report + one instruction per line, and we collect the different operand + formats. */ + for (i = 0; i < num_opcodes; i++, opcodes++) + { + char *fmt = print_opcode_format (opcodes, example); + + if (example) + { + printf ("L%d:\t", i); + printf ("%s %s\n", opcodes->name, fmt); + } + else + { + if (strcmp (prev_name, opcodes->name)) + { + if (i > 0) + printf ("\n"); + + printf ("%-5.5s ", opcodes->name); + prev_name = (char *) opcodes->name; + } + if (fmt[0]) + printf (" [%s]", fmt); + } + } + printf ("\n"); +} + + +/* Print the instruction format. This operation is called when some + instruction is not correct. Instruction format is printed as an + error message. */ +static void +print_insn_format (name) + char *name; +{ + struct m68hc11_opcode_def *opc; + struct m68hc11_opcode *opcode; + char buf[128]; + + opc = (struct m68hc11_opcode_def *) hash_find (m68hc11_hash, name); + if (opc == NULL) + { + as_bad (_("Instruction `%s' is not recognized."), name); + return; + } + opcode = opc->opcode; + + as_bad (_("Instruction formats for `%s':"), name); + do + { + char *fmt; + + fmt = print_opcode_format (opcode, 0, 0); + sprintf (buf, "\t%-5.5s %s", opcode->name, fmt); + + as_bad ("%s", buf); + opcode++; + } + while (strcmp (opcode->name, name) == 0); +} + + +/* Analysis of 68HC11 and 68HC12 operands. */ + +/* reg_name_search() finds the register number given its name. + Returns the register number or REG_NONE on failure. */ +static register_id +reg_name_search (name) + char *name; +{ + if (strcasecmp (name, "x") == 0 || strcasecmp (name, "ix") == 0) + return REG_X; + if (strcasecmp (name, "y") == 0 || strcasecmp (name, "iy") == 0) + return REG_Y; + if (strcasecmp (name, "a") == 0) + return REG_A; + if (strcasecmp (name, "b") == 0) + return REG_B; + if (strcasecmp (name, "d") == 0) + return REG_D; + if (strcasecmp (name, "sp") == 0) + return REG_SP; + if (strcasecmp (name, "pc") == 0) + return REG_PC; + if (strcasecmp (name, "ccr") == 0) + return REG_CCR; + + return REG_NONE; +} + +static char * +skip_whites (p) + char *p; +{ + while (*p == ' ' || *p == '\t') + p++; + + return p; +} + +/* register_name() checks the string at input_line_pointer + to see if it is a valid register name. */ +static register_id +register_name () +{ + register_id reg_number; + char c, *p = input_line_pointer; + + if (!is_name_beginner (*p++)) + return REG_NONE; + + while (is_part_of_name (*p++)) + continue; + + c = *--p; + if (c) + *p++ = 0; + + /* look to see if it's in the register table. */ + reg_number = reg_name_search (input_line_pointer); + if (reg_number != REG_NONE) + { + if (c) + *--p = c; + + input_line_pointer = p; + return reg_number; + } + if (c) + *--p = c; + + return reg_number; +} + +/* get_operands parses a string of operands and returns + an array of expressions. + + Operand mode[0] mode[1] exp[0] exp[1] + #n M6811_OP_IMM16 - O_* + *<exp> M6811_OP_DIRECT - O_* + .{+-}<exp> M6811_OP_JUMP_REL - O_* + <exp> M6811_OP_IND16 - O_* + ,r N,r M6812_OP_IDX M6812_OP_REG O_constant O_register + n,-r M6812_PRE_DEC M6812_OP_REG O_constant O_register + n,+r M6812_PRE_INC " " + n,r- M6812_POST_DEC " " + n,r+ M6812_POST_INC " " + A,r B,r D,r M6811_OP_REG M6812_OP_REG O_register O_register + [D,r] M6811_OP_IDX_2 M6812_OP_REG O_register O_register + [n,r] M6811_OP_IDX_1 M6812_OP_REG O_constant O_register + +*/ + +static int +get_operand (oper, which, opmode) + operand *oper; + int which; + long opmode; +{ + char *p = input_line_pointer; + int mode; + register_id reg; + + oper->exp.X_op = O_absent; + oper->reg1 = REG_NONE; + oper->reg2 = REG_NONE; + mode = M6811_OP_NONE; + + p = skip_whites (p); + + if (*p == 0 || *p == '\n' || *p == '\r') + { + input_line_pointer = p; + return 0; + } + + if (*p == '*' && (opmode & (M6811_OP_DIRECT | M6811_OP_IND16))) + { + mode = M6811_OP_DIRECT; + p++; + } + else if (*p == '#') + { + if (!(opmode & (M6811_OP_IMM8 | M6811_OP_IMM16 | M6811_OP_BITMASK))) + { + as_bad (_("Immediate operand is not allowed for operand %d."), + which); + return -1; + } + + mode = M6811_OP_IMM16; + p++; + if (strncmp (p, "%hi", 3) == 0) + { + p += 3; + mode |= M6811_OP_HIGH_ADDR; + } + else if (strncmp (p, "%lo", 3) == 0) + { + p += 3; + mode |= M6811_OP_LOW_ADDR; + } + } + else if (*p == '.' && (p[1] == '+' || p[1] == '-')) + { + p++; + mode = M6811_OP_JUMP_REL; + } + else if (*p == '[') + { + if (current_architecture & cpu6811) + as_bad (_("Indirect indexed addressing is not valid for 68HC11.")); + + p++; + mode = M6812_OP_IDX_2; + p = skip_whites (p); + } + else if (*p == ',') /* Special handling of ,x and ,y. */ + { + p++; + input_line_pointer = p; + + reg = register_name (); + if (reg != REG_NONE) + { + oper->reg1 = reg; + oper->exp.X_op = O_constant; + oper->exp.X_add_number = 0; + oper->mode = M6812_OP_IDX; + return 1; + } + as_bad (_("Spurious `,' or bad indirect register addressing mode.")); + return -1; + } + input_line_pointer = p; + + if (mode == M6811_OP_NONE || mode == M6812_OP_IDX_2) + reg = register_name (); + else + reg = REG_NONE; + + if (reg != REG_NONE) + { + p = skip_whites (input_line_pointer); + if (*p == ']' && mode == M6812_OP_IDX_2) + { + as_bad + (_("Missing second register or offset for indexed-indirect mode.")); + return -1; + } + + oper->reg1 = reg; + oper->mode = mode | M6812_OP_REG; + if (*p != ',') + { + if (mode == M6812_OP_IDX_2) + { + as_bad (_("Missing second register for indexed-indirect mode.")); + return -1; + } + return 1; + } + + p++; + input_line_pointer = p; + reg = register_name (); + if (reg != REG_NONE) + { + p = skip_whites (input_line_pointer); + if (mode == M6812_OP_IDX_2) + { + if (*p != ']') + { + as_bad (_("Missing `]' to close indexed-indirect mode.")); + return -1; + } + p++; + } + input_line_pointer = p; + + oper->reg2 = reg; + return 1; + } + return 1; + } + + /* In MRI mode, isolate the operand because we can't distinguish + operands from comments. */ + if (flag_mri) + { + char c = 0; + + p = skip_whites (p); + while (*p && *p != ' ' && *p != '\t') + p++; + + if (*p) + { + c = *p; + *p = 0; + } + + /* Parse as an expression. */ + expression (&oper->exp); + + if (c) + { + *p = c; + } + } + else + { + expression (&oper->exp); + } + + if (oper->exp.X_op == O_illegal) + { + as_bad (_("Illegal operand.")); + return -1; + } + else if (oper->exp.X_op == O_absent) + { + as_bad (_("Missing operand.")); + return -1; + } + + p = input_line_pointer; + + if (mode == M6811_OP_NONE || mode == M6811_OP_DIRECT + || mode == M6812_OP_IDX_2) + { + p = skip_whites (input_line_pointer); + + if (*p == ',') + { + p++; + + /* 68HC12 pre increment or decrement. */ + if (mode == M6811_OP_NONE) + { + if (*p == '-') + { + mode = M6812_PRE_DEC; + p++; + if (current_architecture & cpu6811) + as_bad (_("Pre-decrement mode is not valid for 68HC11")); + } + else if (*p == '+') + { + mode = M6812_PRE_INC; + p++; + if (current_architecture & cpu6811) + as_bad (_("Pre-increment mode is not valid for 68HC11")); + } + p = skip_whites (p); + } + input_line_pointer = p; + reg = register_name (); + + /* Backtrack... */ + if (which == 0 && opmode & M6812_OP_IDX_P2 + && reg != REG_X && reg != REG_Y + && reg != REG_PC && reg != REG_SP) + { + reg = REG_NONE; + input_line_pointer = p; + } + + if (reg == REG_NONE && mode != M6811_OP_DIRECT + && !(mode == M6811_OP_NONE && opmode & M6811_OP_IND16)) + { + as_bad (_("Wrong register in register indirect mode.")); + return -1; + } + if (mode == M6812_OP_IDX_2) + { + p = skip_whites (input_line_pointer); + if (*p++ != ']') + { + as_bad (_("Missing `]' to close register indirect operand.")); + return -1; + } + input_line_pointer = p; + } + if (reg != REG_NONE) + { + oper->reg1 = reg; + if (mode == M6811_OP_NONE) + { + p = input_line_pointer; + if (*p == '-') + { + mode = M6812_POST_DEC; + p++; + if (current_architecture & cpu6811) + as_bad + (_("Post-decrement mode is not valid for 68HC11.")); + } + else if (*p == '+') + { + mode = M6812_POST_INC; + p++; + if (current_architecture & cpu6811) + as_bad + (_("Post-increment mode is not valid for 68HC11.")); + } + else + mode = M6812_OP_IDX; + + input_line_pointer = p; + } + else + mode |= M6812_OP_IDX; + + oper->mode = mode; + return 1; + } + } + + if (mode == M6812_OP_D_IDX_2) + { + as_bad (_("Invalid indexed indirect mode.")); + return -1; + } + } + + /* If the mode is not known until now, this is either a label + or an indirect address. */ + if (mode == M6811_OP_NONE) + { + mode = M6811_OP_IND16 | M6811_OP_JUMP_REL; + } + + p = input_line_pointer; + while (*p == ' ' || *p == '\t') + p++; + input_line_pointer = p; + oper->mode = mode; + + return 1; +} + +#define M6812_AUTO_INC_DEC (M6812_PRE_INC | M6812_PRE_DEC \ + | M6812_POST_INC | M6812_POST_DEC) + +/* Checks that the number 'num' fits for a given mode. */ +static int +check_range (num, mode) + long num; + int mode; +{ + /* Auto increment and decrement are ok for [-8..8] without 0. */ + if (mode & M6812_AUTO_INC_DEC) + { + return (num != 0 && num <= 8 && num >= -8); + } + + /* The 68HC12 supports 5, 9 and 16-bits offsets. */ + if (mode & (M6812_INDEXED_IND | M6812_INDEXED | M6812_OP_IDX)) + { + mode = M6811_OP_IND16; + } + + if (mode & M6812_OP_JUMP_REL16) + mode = M6811_OP_IND16; + + switch (mode) + { + case M6811_OP_IX: + case M6811_OP_IY: + case M6811_OP_DIRECT: + return (num >= 0 && num <= 255) ? 1 : 0; + + case M6811_OP_BITMASK: + case M6811_OP_IMM8: + return (((num & 0xFFFFFF00) == 0) || ((num & 0xFFFFFF00) == 0xFFFFFF00)) + ? 1 : 0; + + case M6811_OP_JUMP_REL: + return (num >= -128 && num <= 127) ? 1 : 0; + + case M6811_OP_IND16: + case M6811_OP_IMM16: + return (((num & 0xFFFF0000) == 0) || ((num & 0xFFFF0000) == 0xFFFF0000)) + ? 1 : 0; + + case M6812_OP_IBCC_MARKER: + case M6812_OP_TBCC_MARKER: + case M6812_OP_DBCC_MARKER: + return (num >= -256 && num <= 255) ? 1 : 0; + + case M6812_OP_TRAP_ID: + return ((num >= 0x30 && num <= 0x39) + || (num >= 0x40 && num <= 0x0ff)) ? 1 : 0; + + default: + return 0; + } +} + + +/* Gas fixup generation. */ + +/* Put a 1 byte expression described by 'oper'. If this expression contains + unresolved symbols, generate an 8-bit fixup. */ +static void +fixup8 (oper, mode, opmode) + expressionS *oper; + int mode; + int opmode; +{ + char *f; + + f = frag_more (1); + + if (oper->X_op == O_constant) + { + if (mode & M6812_OP_TRAP_ID + && !check_range (oper->X_add_number, M6812_OP_TRAP_ID)) + { + static char trap_id_warn_once = 0; + + as_bad (_("Trap id `%ld' is out of range."), oper->X_add_number); + if (trap_id_warn_once == 0) + { + trap_id_warn_once = 1; + as_bad (_("Trap id must be within [0x30..0x39] or [0x40..0xff].")); + } + } + + if (!(mode & M6812_OP_TRAP_ID) + && !check_range (oper->X_add_number, mode)) + { + as_bad (_("Operand out of 8-bit range: `%ld'."), oper->X_add_number); + } + number_to_chars_bigendian (f, oper->X_add_number & 0x0FF, 1); + } + else if (oper->X_op != O_register) + { + if (mode & M6812_OP_TRAP_ID) + as_bad (_("The trap id must be a constant.")); + + if (mode == M6811_OP_JUMP_REL) + { + fixS *fixp; + + fixp = fix_new_exp (frag_now, f - frag_now->fr_literal, 1, + oper, true, BFD_RELOC_8_PCREL); + fixp->fx_pcrel_adjust = 1; + } + else + { + /* Now create an 8-bit fixup. If there was some %hi or %lo + modifier, generate the reloc accordingly. */ + fix_new_exp (frag_now, f - frag_now->fr_literal, 1, + oper, false, + ((opmode & M6811_OP_HIGH_ADDR) + ? BFD_RELOC_M68HC11_HI8 + : ((opmode & M6811_OP_LOW_ADDR) + ? BFD_RELOC_M68HC11_LO8 : BFD_RELOC_8))); + } + number_to_chars_bigendian (f, 0, 1); + } + else + { + as_fatal (_("Operand `%x' not recognized in fixup8."), oper->X_op); + } +} + +/* Put a 2 bytes expression described by 'oper'. If this expression contains + unresolved symbols, generate a 16-bit fixup. */ +static void +fixup16 (oper, mode, opmode) + expressionS *oper; + int mode; + int opmode ATTRIBUTE_UNUSED; +{ + char *f; + + f = frag_more (2); + + if (oper->X_op == O_constant) + { + if (!check_range (oper->X_add_number, mode)) + { + as_bad (_("Operand out of 16-bit range: `%ld'."), + oper->X_add_number); + } + number_to_chars_bigendian (f, oper->X_add_number & 0x0FFFF, 2); + } + else if (oper->X_op != O_register) + { + fixS *fixp; + + /* Now create a 16-bit fixup. */ + fixp = fix_new_exp (frag_now, f - frag_now->fr_literal, 2, + oper, + (mode & M6812_OP_JUMP_REL16 ? true : false), + (mode & M6812_OP_JUMP_REL16 + ? BFD_RELOC_16_PCREL : BFD_RELOC_16)); + number_to_chars_bigendian (f, 0, 2); + if (mode & M6812_OP_JUMP_REL16) + fixp->fx_pcrel_adjust = 2; + } + else + { + as_fatal (_("Operand `%x' not recognized in fixup16."), oper->X_op); + } +} + + +/* 68HC11 and 68HC12 code generation. */ + +/* Translate the short branch/bsr instruction into a long branch. */ +static unsigned char +convert_branch (code) + unsigned char code; +{ + if (IS_OPCODE (code, M6812_BSR)) + return M6812_JSR; + else if (IS_OPCODE (code, M6811_BSR)) + return M6811_JSR; + else if (IS_OPCODE (code, M6811_BRA)) + return (current_architecture & cpu6812) ? M6812_JMP : M6811_JMP; + else + as_fatal (_("Unexpected branch conversion with `%x'"), code); + + /* Keep gcc happy. */ + return M6811_JSR; +} + +/* Start a new insn that contains at least 'size' bytes. Record the + line information of that insn in the dwarf2 debug sections. */ +static char* +m68hc11_new_insn (size) + int size; +{ + char* f; + + f = frag_more (size); + + /* Emit line number information in dwarf2 debug sections. */ + if (debug_type == DEBUG_DWARF2) + { + bfd_vma addr; + + dwarf2_where (&debug_line); + addr = frag_now->fr_address + frag_now_fix () - size; + dwarf2_gen_line_info (addr, &debug_line); + } + return f; +} + +/* Builds a jump instruction (bra, bcc, bsr). */ +static void +build_jump_insn (opcode, operands, nb_operands, jmp_mode) + struct m68hc11_opcode *opcode; + operand operands[]; + int nb_operands; + int jmp_mode; +{ + unsigned char code; + int insn_size; + char *f; + unsigned long n; + + /* The relative branch convertion is not supported for + brclr and brset. */ + assert ((opcode->format & M6811_OP_BITMASK) == 0); + assert (nb_operands == 1); + assert (operands[0].reg1 == REG_NONE && operands[0].reg2 == REG_NONE); + + code = opcode->opcode; + insn_size = 1; + + n = operands[0].exp.X_add_number; + + /* Turn into a long branch: + - when force long branch option (and not for jbcc pseudos), + - when jbcc and the constant is out of -128..127 range, + - when branch optimization is allowed and branch out of range. */ + if ((jmp_mode == 0 && flag_force_long_jumps) + || (operands[0].exp.X_op == O_constant + && (!check_range (n, opcode->format) && + (jmp_mode == 1 || flag_fixed_branchs == 0)))) + { + if (code == M6811_BSR || code == M6811_BRA || code == M6812_BSR) + { + code = convert_branch (code); + + f = m68hc11_new_insn (1); + number_to_chars_bigendian (f, code, 1); + } + else if (current_architecture & cpu6812) + { + /* 68HC12: translate the bcc into a lbcc. */ + f = m68hc11_new_insn (2); + number_to_chars_bigendian (f, M6811_OPCODE_PAGE2, 1); + number_to_chars_bigendian (f + 1, code, 1); + fixup16 (&operands[0].exp, M6812_OP_JUMP_REL16, + M6812_OP_JUMP_REL16); + return; + } + else + { + /* 68HC11: translate the bcc into b!cc +3; jmp <L>. */ + f = m68hc11_new_insn (3); + code ^= 1; + number_to_chars_bigendian (f, code, 1); + number_to_chars_bigendian (f + 1, 3, 1); + number_to_chars_bigendian (f + 2, M6811_JMP, 1); + } + fixup16 (&operands[0].exp, M6811_OP_IND16, M6811_OP_IND16); + return; + } + + /* Branch with a constant that must fit in 8-bits. */ + if (operands[0].exp.X_op == O_constant) + { + if (!check_range (n, opcode->format)) + { + as_bad (_("Operand out of range for a relative branch: `%ld'"), + n); + } + else if (opcode->format & M6812_OP_JUMP_REL16) + { + f = m68hc11_new_insn (4); + number_to_chars_bigendian (f, M6811_OPCODE_PAGE2, 1); + number_to_chars_bigendian (f + 1, code, 1); + number_to_chars_bigendian (f + 2, n & 0x0ffff, 2); + } + else + { + f = m68hc11_new_insn (2); + number_to_chars_bigendian (f, code, 1); + number_to_chars_bigendian (f + 1, n & 0x0FF, 1); + } + } + else if (opcode->format & M6812_OP_JUMP_REL16) + { + f = m68hc11_new_insn (2); + number_to_chars_bigendian (f, M6811_OPCODE_PAGE2, 1); + number_to_chars_bigendian (f + 1, code, 1); + fixup16 (&operands[0].exp, M6812_OP_JUMP_REL16, M6812_OP_JUMP_REL16); + } + else + { + char *opcode; + + /* Branch offset must fit in 8-bits, don't do some relax. */ + if (jmp_mode == 0 && flag_fixed_branchs) + { + opcode = m68hc11_new_insn (1); + number_to_chars_bigendian (opcode, code, 1); + fixup8 (&operands[0].exp, M6811_OP_JUMP_REL, M6811_OP_JUMP_REL); + } + + /* bra/bsr made be changed into jmp/jsr. */ + else if (code == M6811_BSR || code == M6811_BRA || code == M6812_BSR) + { + opcode = m68hc11_new_insn (2); + number_to_chars_bigendian (opcode, code, 1); + number_to_chars_bigendian (opcode + 1, 0, 1); + frag_var (rs_machine_dependent, 1, 1, + ENCODE_RELAX (STATE_PC_RELATIVE, STATE_UNDF), + operands[0].exp.X_add_symbol, (offsetT) n, opcode); + } + else if (current_architecture & cpu6812) + { + opcode = m68hc11_new_insn (2); + number_to_chars_bigendian (opcode, code, 1); + number_to_chars_bigendian (opcode + 1, 0, 1); + frag_var (rs_machine_dependent, 2, 2, + ENCODE_RELAX (STATE_CONDITIONAL_BRANCH_6812, STATE_UNDF), + operands[0].exp.X_add_symbol, (offsetT) n, opcode); + } + else + { + opcode = m68hc11_new_insn (2); + number_to_chars_bigendian (opcode, code, 1); + number_to_chars_bigendian (opcode + 1, 0, 1); + frag_var (rs_machine_dependent, 3, 3, + ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_UNDF), + operands[0].exp.X_add_symbol, (offsetT) n, opcode); + } + } +} + +/* Builds a dbne/dbeq/tbne/tbeq instruction. */ +static void +build_dbranch_insn (opcode, operands, nb_operands, jmp_mode) + struct m68hc11_opcode *opcode; + operand operands[]; + int nb_operands; + int jmp_mode; +{ + unsigned char code; + int insn_size; + char *f; + unsigned long n; + + /* The relative branch convertion is not supported for + brclr and brset. */ + assert ((opcode->format & M6811_OP_BITMASK) == 0); + assert (nb_operands == 2); + assert (operands[0].reg1 != REG_NONE); + + code = opcode->opcode & 0x0FF; + insn_size = 1; + + f = m68hc11_new_insn (1); + number_to_chars_bigendian (f, code, 1); + + n = operands[1].exp.X_add_number; + code = operands[0].reg1; + + if (operands[0].reg1 == REG_NONE || operands[0].reg1 == REG_CCR + || operands[0].reg1 == REG_PC) + as_bad (_("Invalid register for dbcc/tbcc instruction.")); + + if (opcode->format & M6812_OP_IBCC_MARKER) + code |= 0x80; + else if (opcode->format & M6812_OP_TBCC_MARKER) + code |= 0x40; + + if (!(opcode->format & M6812_OP_EQ_MARKER)) + code |= 0x20; + + /* Turn into a long branch: + - when force long branch option (and not for jbcc pseudos), + - when jdbcc and the constant is out of -256..255 range, + - when branch optimization is allowed and branch out of range. */ + if ((jmp_mode == 0 && flag_force_long_jumps) + || (operands[1].exp.X_op == O_constant + && (!check_range (n, M6812_OP_IBCC_MARKER) && + (jmp_mode == 1 || flag_fixed_branchs == 0)))) + { + f = frag_more (2); + code ^= 0x20; + number_to_chars_bigendian (f, code, 1); + number_to_chars_bigendian (f + 1, M6812_JMP, 1); + fixup16 (&operands[0].exp, M6811_OP_IND16, M6811_OP_IND16); + return; + } + + /* Branch with a constant that must fit in 9-bits. */ + if (operands[1].exp.X_op == O_constant) + { + if (!check_range (n, M6812_OP_IBCC_MARKER)) + { + as_bad (_("Operand out of range for a relative branch: `%ld'"), + n); + } + else + { + if ((long) n < 0) + code |= 0x10; + + f = frag_more (2); + number_to_chars_bigendian (f, code, 1); + number_to_chars_bigendian (f + 1, n & 0x0FF, 1); + } + } + else + { + /* Branch offset must fit in 8-bits, don't do some relax. */ + if (jmp_mode == 0 && flag_fixed_branchs) + { + fixup8 (&operands[0].exp, M6811_OP_JUMP_REL, M6811_OP_JUMP_REL); + } + + else + { + f = frag_more (2); + number_to_chars_bigendian (f, code, 1); + number_to_chars_bigendian (f + 1, 0, 1); + frag_var (rs_machine_dependent, 3, 3, + ENCODE_RELAX (STATE_XBCC_BRANCH, STATE_UNDF), + operands[1].exp.X_add_symbol, (offsetT) n, f); + } + } +} + +#define OP_EXTENDED (M6811_OP_PAGE2 | M6811_OP_PAGE3 | M6811_OP_PAGE4) + +/* Assemble the post index byte for 68HC12 extended addressing modes. */ +static int +build_indexed_byte (op, format, move_insn) + operand *op; + int format ATTRIBUTE_UNUSED; + int move_insn; +{ + unsigned char byte = 0; + char *f; + int mode; + long val; + + val = op->exp.X_add_number; + mode = op->mode; + if (mode & M6812_AUTO_INC_DEC) + { + byte = 0x20; + if (mode & (M6812_POST_INC | M6812_POST_DEC)) + byte |= 0x10; + + if (op->exp.X_op == O_constant) + { + if (!check_range (val, mode)) + { + as_bad (_("Increment/decrement value is out of range: `%ld'."), + val); + } + if (mode & (M6812_POST_INC | M6812_PRE_INC)) + byte |= (val - 1) & 0x07; + else + byte |= (8 - ((val) & 7)) | 0x8; + } + switch (op->reg1) + { + case REG_NONE: + as_fatal (_("Expecting a register.")); + + case REG_X: + byte |= 0; + break; + + case REG_Y: + byte |= 0x40; + break; + + case REG_SP: + byte |= 0x80; + break; + + default: + as_bad (_("Invalid register for post/pre increment.")); + break; + } + + f = frag_more (1); + number_to_chars_bigendian (f, byte, 1); + return 1; + } + + if (mode & M6812_OP_IDX) + { + switch (op->reg1) + { + case REG_X: + byte = 0; + break; + + case REG_Y: + byte = 1; + break; + + case REG_SP: + byte = 2; + break; + + case REG_PC: + byte = 3; + break; + + default: + as_bad (_("Invalid register.")); + break; + } + if (op->exp.X_op == O_constant) + { + if (!check_range (val, M6812_OP_IDX)) + { + as_bad (_("Offset out of 16-bit range: %ld."), val); + } + + if (move_insn && !(val >= -16 && val <= 15)) + { + as_bad (_("Offset out of 5-bit range for movw/movb insn.")); + return -1; + } + + if (val >= -16 && val <= 15 && !(mode & M6812_OP_IDX_2)) + { + byte = byte << 6; + byte |= val & 0x1f; + f = frag_more (1); + number_to_chars_bigendian (f, byte, 1); + return 1; + } + else if (val >= -256 && val <= 255 && !(mode & M6812_OP_IDX_2)) + { + byte = byte << 3; + byte |= 0xe0; + if (val < 0) + byte |= 0x1; + f = frag_more (2); + number_to_chars_bigendian (f, byte, 1); + number_to_chars_bigendian (f + 1, val & 0x0FF, 1); + return 2; + } + else + { + byte = byte << 3; + if (mode & M6812_OP_IDX_2) + byte |= 0xe3; + else + byte |= 0xe2; + + f = frag_more (3); + number_to_chars_bigendian (f, byte, 1); + number_to_chars_bigendian (f + 1, val & 0x0FFFF, 2); + return 3; + } + } + f = frag_more (1); + number_to_chars_bigendian (f, byte, 1); + /* + fix_new_exp (frag_now, f - frag_now->fr_literal, 2, + &op->exp, false, BFD_RELOC_16); */ + frag_var (rs_machine_dependent, 2, 2, + ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_UNDF), + op->exp.X_add_symbol, val, f); + return 3; + } + + if (mode & M6812_OP_REG) + { + if (mode & M6812_OP_IDX_2) + { + if (op->reg1 != REG_D) + as_bad (_("Expecting register D for indexed indirect mode.")); + if (move_insn) + as_bad (_("Indexed indirect mode is not allowed for movb/movw.")); + + byte = 0xE7; + } + else + { + switch (op->reg1) + { + case REG_A: + byte = 0xE4; + break; + + case REG_B: + byte = 0xE5; + break; + + default: + as_bad (_("Invalid accumulator register.")); + + case REG_D: + byte = 0xE6; + break; + } + } + switch (op->reg2) + { + case REG_X: + break; + + case REG_Y: + byte |= (1 << 3); + break; + + case REG_SP: + byte |= (2 << 3); + break; + + case REG_PC: + byte |= (3 << 3); + break; + + default: + as_bad (_("Invalid indexed register.")); + break; + } + f = frag_more (1); + number_to_chars_bigendian (f, byte, 1); + return 1; + } + + as_fatal (_("Addressing mode not implemented yet.")); + return 0; +} + +/* Assemble the 68HC12 register mode byte. */ +static int +build_reg_mode (op, format) + operand *op; + int format; +{ + unsigned char byte; + char *f; + + if (format & M6812_OP_SEX_MARKER + && op->reg1 != REG_A && op->reg1 != REG_B && op->reg1 != REG_CCR) + as_bad (_("Invalid source register for this instruction, use 'tfr'.")); + else if (op->reg1 == REG_NONE || op->reg1 == REG_PC) + as_bad (_("Invalid source register.")); + + if (format & M6812_OP_SEX_MARKER + && op->reg2 != REG_D + && op->reg2 != REG_X && op->reg2 != REG_Y && op->reg2 != REG_SP) + as_bad (_("Invalid destination register for this instruction, use 'tfr'.")); + else if (op->reg2 == REG_NONE || op->reg2 == REG_PC) + as_bad (_("Invalid destination register.")); + + byte = (op->reg1 << 4) | (op->reg2); + if (format & M6812_OP_EXG_MARKER) + byte |= 0x80; + + f = frag_more (1); + number_to_chars_bigendian (f, byte, 1); + return 1; +} + +/* build_insn takes a pointer to the opcode entry in the opcode table, + the array of operand expressions and builds the correspding instruction. + This operation only deals with non relative jumps insn (need special + handling). */ +static void +build_insn (opcode, operands, nb_operands) + struct m68hc11_opcode *opcode; + operand operands[]; + int nb_operands ATTRIBUTE_UNUSED; +{ + int i; + char *f; + int insn_size = 1; + long format; + int move_insn = 0; + + /* Put the page code instruction if there is one. */ + format = opcode->format; + if (format & OP_EXTENDED) + { + int page_code; + + f = m68hc11_new_insn (2); + if (format & M6811_OP_PAGE2) + page_code = M6811_OPCODE_PAGE2; + else if (format & M6811_OP_PAGE3) + page_code = M6811_OPCODE_PAGE3; + else + page_code = M6811_OPCODE_PAGE4; + + number_to_chars_bigendian (f, page_code, 1); + f++; + insn_size = 2; + } + else + f = m68hc11_new_insn (1); + + number_to_chars_bigendian (f, opcode->opcode, 1); + + i = 0; + + /* The 68HC12 movb and movw instructions are special. We have to handle + them in a special way. */ + if (format & (M6812_OP_IND16_P2 | M6812_OP_IDX_P2)) + { + move_insn = 1; + if (format & M6812_OP_IDX) + { + insn_size += build_indexed_byte (&operands[0], format, 1); + i = 1; + format &= ~M6812_OP_IDX; + } + if (format & M6812_OP_IDX_P2) + { + insn_size += build_indexed_byte (&operands[1], format, 1); + i = 0; + format &= ~M6812_OP_IDX_P2; + } + } + + if (format & (M6811_OP_DIRECT | M6811_OP_IMM8)) + { + insn_size++; + fixup8 (&operands[i].exp, + format & (M6811_OP_DIRECT | M6811_OP_IMM8 | M6812_OP_TRAP_ID), + operands[i].mode); + i++; + } + else if (format & (M6811_OP_IMM16 | M6811_OP_IND16)) + { + insn_size += 2; + fixup16 (&operands[i].exp, format & (M6811_OP_IMM16 | M6811_OP_IND16), + operands[i].mode); + i++; + } + else if (format & (M6811_OP_IX | M6811_OP_IY)) + { + if ((format & M6811_OP_IX) && (operands[0].reg1 != REG_X)) + as_bad (_("Invalid indexed register, expecting register X.")); + if ((format & M6811_OP_IY) && (operands[0].reg1 != REG_Y)) + as_bad (_("Invalid indexed register, expecting register Y.")); + + insn_size++; + fixup8 (&operands[0].exp, M6811_OP_IX, operands[0].mode); + i = 1; + } + else if (format & + (M6812_OP_IDX | M6812_OP_IDX_2 | M6812_OP_IDX_1 | M6812_OP_D_IDX)) + { + insn_size += build_indexed_byte (&operands[i], format, move_insn); + i++; + } + else if (format & M6812_OP_REG && current_architecture & cpu6812) + { + insn_size += build_reg_mode (&operands[i], format); + i++; + } + if (format & M6811_OP_BITMASK) + { + insn_size++; + fixup8 (&operands[i].exp, M6811_OP_BITMASK, operands[i].mode); + i++; + } + if (format & M6811_OP_JUMP_REL) + { + insn_size++; + fixup8 (&operands[i].exp, M6811_OP_JUMP_REL, operands[i].mode); + i++; + } + else if (format & M6812_OP_IND16_P2) + { + insn_size += 2; + fixup16 (&operands[1].exp, M6811_OP_IND16, operands[1].mode); + } +} + + +/* Opcode identification and operand analysis. */ + +/* find() gets a pointer to an entry in the opcode table. It must look at all + opcodes with the same name and use the operands to choose the correct + opcode. Returns the opcode pointer if there was a match and 0 if none. */ +static struct m68hc11_opcode * +find (opc, operands, nb_operands) + struct m68hc11_opcode_def *opc; + operand operands[]; + int nb_operands; +{ + int i, match, pos; + struct m68hc11_opcode *opcode; + struct m68hc11_opcode *op_indirect; + + op_indirect = 0; + opcode = opc->opcode; + + /* Now search the opcode table table for one with operands + that matches what we've got. We're only done if the operands matched so + far AND there are no more to check. */ + for (pos = match = 0; match == 0 && pos < opc->nb_modes; pos++, opcode++) + { + int poss_indirect = 0; + long format = opcode->format; + int expect; + + expect = 0; + if (opcode->format & M6811_OP_MASK) + expect++; + if (opcode->format & M6811_OP_BITMASK) + expect++; + if (opcode->format & (M6811_OP_JUMP_REL | M6812_OP_JUMP_REL16)) + expect++; + if (opcode->format & (M6812_OP_IND16_P2 | M6812_OP_IDX_P2)) + expect++; + + for (i = 0; expect == nb_operands && i < nb_operands; i++) + { + int mode = operands[i].mode; + + if (mode & M6811_OP_IMM16) + { + if (format & + (M6811_OP_IMM8 | M6811_OP_IMM16 | M6811_OP_BITMASK)) + continue; + break; + } + if (mode == M6811_OP_DIRECT) + { + if (format & M6811_OP_DIRECT) + continue; + + /* If the operand is a page 0 operand, remember a + possible <abs-16> addressing mode. We mark + this and continue to check other operands. */ + if (format & M6811_OP_IND16 + && flag_strict_direct_addressing && op_indirect == 0) + { + poss_indirect = 1; + continue; + } + break; + } + if (mode & M6811_OP_IND16) + { + if (i == 0 && (format & M6811_OP_IND16) != 0) + continue; + if (i != 0 && (format & M6812_OP_IND16_P2) != 0) + continue; + if (i == 0 && (format & M6811_OP_BITMASK)) + break; + } + if (mode & (M6811_OP_JUMP_REL | M6812_OP_JUMP_REL16)) + { + if (format & (M6811_OP_JUMP_REL | M6812_OP_JUMP_REL16)) + continue; + } + if (mode & M6812_OP_REG) + { + if (i == 0 && format & M6812_OP_REG + && operands[i].reg2 == REG_NONE) + continue; + if (i == 0 && format & M6812_OP_REG + && format & M6812_OP_REG_2 && operands[i].reg2 != REG_NONE) + { + continue; + } + if (i == 0 && format & M6812_OP_D_IDX) + continue; + if (i == 0 && (format & M6812_OP_IDX) + && (format & (M6812_OP_IND16_P2 | M6812_OP_IDX_P2))) + continue; + if (i == 1 && format & M6812_OP_IDX_P2) + continue; + break; + } + if (mode & M6812_OP_IDX) + { + if (format & M6811_OP_IX && operands[i].reg1 == REG_X) + continue; + if (format & M6811_OP_IY && operands[i].reg1 == REG_Y) + continue; + if (i == 0 + && format & (M6812_OP_IDX | M6812_OP_IDX_1 | M6812_OP_IDX_2) + && (operands[i].reg1 == REG_X + || operands[i].reg1 == REG_Y + || operands[i].reg1 == REG_SP + || operands[i].reg1 == REG_PC)) + continue; + if (i == 1 && format & M6812_OP_IDX_P2) + continue; + } + if (mode & M6812_AUTO_INC_DEC) + { + if (i == 0 + && format & (M6812_OP_IDX | M6812_OP_IDX_1 | + M6812_OP_IDX_2)) + continue; + if (i == 1 && format & M6812_OP_IDX_P2) + continue; + } + break; + } + match = i == nb_operands; + + /* Operands are ok but an operand uses page 0 addressing mode + while the insn supports abs-16 mode. Keep a reference to this + insns in case there is no insn supporting page 0 addressing. */ + if (match && poss_indirect) + { + op_indirect = opcode; + match = 0; + } + if (match) + break; + } + + /* Page 0 addressing is used but not supported by any insn. + If absolute addresses are supported, we use that insn. */ + if (match == 0 && op_indirect) + { + opcode = op_indirect; + match = 1; + } + + if (!match) + { + return (0); + } + + return opcode; +} + + +/* Find the real opcode and its associated operands. We use a progressive + approach here. On entry, 'opc' points to the first opcode in the + table that matches the opcode name in the source line. We try to + isolate an operand, find a possible match in the opcode table. + We isolate another operand if no match were found. The table 'operands' + is filled while operands are recognized. + + Returns the opcode pointer that matches the opcode name in the + source line and the associated operands. */ +static struct m68hc11_opcode * +find_opcode (opc, operands, nb_operands) + struct m68hc11_opcode_def *opc; + operand operands[]; + int *nb_operands; +{ + struct m68hc11_opcode *opcode; + int i; + + if (opc->max_operands == 0) + { + *nb_operands = 0; + return opc->opcode; + } + + for (i = 0; i < opc->max_operands;) + { + int result; + + result = get_operand (&operands[i], i, opc->format); + if (result <= 0) + { + return 0; + } + + /* Special case where the bitmask of the bclr/brclr + instructions is not introduced by #. + Example: bclr 3,x $80. */ + if (i == 1 && (opc->format & M6811_OP_BITMASK) + && (operands[i].mode & M6811_OP_IND16)) + { + operands[i].mode = M6811_OP_IMM16; + } + + i += result; + *nb_operands = i; + if (i >= opc->min_operands) + { + opcode = find (opc, operands, i); + if (opcode) + { + return opcode; + } + } + + if (*input_line_pointer == ',') + input_line_pointer++; + } + return 0; +} + +#define M6812_XBCC_MARKER (M6812_OP_TBCC_MARKER \ + | M6812_OP_DBCC_MARKER \ + | M6812_OP_IBCC_MARKER) + + +/* Gas line assembler entry point. */ + +/* This is the main entry point for the machine-dependent assembler. str + points to a machine-dependent instruction. This function is supposed to + emit the frags/bytes it assembles to. */ +void +md_assemble (str) + char *str; +{ + struct m68hc11_opcode_def *opc; + struct m68hc11_opcode *opcode; + + unsigned char *op_start, *save; + unsigned char *op_end; + char name[20]; + int nlen = 0; + operand operands[M6811_MAX_OPERANDS]; + int nb_operands; + int branch_optimize = 0; + int alias_id = -1; + + /* Drop leading whitespace */ + while (*str == ' ') + str++; + + /* Find the opcode end and get the opcode in 'name'. The opcode is forced + lower case (the opcode table only has lower case op-codes). */ + for (op_start = op_end = (unsigned char *) (str); + *op_end && nlen < 20 && !is_end_of_line[*op_end] && *op_end != ' '; + op_end++) + { + name[nlen] = tolower (op_start[nlen]); + nlen++; + } + name[nlen] = 0; + + if (nlen == 0) + { + as_bad (_("No instruction or missing opcode.")); + return; + } + + /* Find the opcode definition given its name. */ + opc = (struct m68hc11_opcode_def *) hash_find (m68hc11_hash, name); + + /* If it's not recognized, look for 'jbsr' and 'jbxx'. These are + pseudo insns for relative branch. For these branchs, we always + optimize them (turned into absolute branchs) even if --short-branchs + is given. */ + if (opc == NULL && name[0] == 'j' && name[1] == 'b') + { + opc = (struct m68hc11_opcode_def *) hash_find (m68hc11_hash, &name[1]); + if (opc + && (!(opc->format & M6811_OP_JUMP_REL) + || (opc->format & M6811_OP_BITMASK))) + opc = 0; + if (opc) + branch_optimize = 1; + } + + /* The following test should probably be removed. This is not conform + to Motorola assembler specs. */ + if (opc == NULL && flag_mri) + { + if (*op_end == ' ' || *op_end == '\t') + { + while (*op_end == ' ' || *op_end == '\t') + op_end++; + + if (nlen < 19 + && (*op_end && + (is_end_of_line[op_end[1]] + || op_end[1] == ' ' || op_end[1] == '\t' + || !isalnum (op_end[1]))) + && (*op_end == 'a' || *op_end == 'b' + || *op_end == 'A' || *op_end == 'B' + || *op_end == 'd' || *op_end == 'D' + || *op_end == 'x' || *op_end == 'X' + || *op_end == 'y' || *op_end == 'Y')) + { + name[nlen++] = tolower (*op_end++); + name[nlen] = 0; + opc = (struct m68hc11_opcode_def *) hash_find (m68hc11_hash, + name); + } + } + } + + /* Identify a possible instruction alias. There are some on the + 68HC12 to emulate a fiew 68HC11 instructions. */ + if (opc == NULL && (current_architecture & cpu6812)) + { + int i; + + for (i = 0; i < m68hc12_num_alias; i++) + if (strcmp (m68hc12_alias[i].name, name) == 0) + { + alias_id = i; + break; + } + } + if (opc == NULL && alias_id < 0) + { + as_bad (_("Opcode `%s' is not recognized."), name); + return; + } + save = input_line_pointer; + input_line_pointer = op_end; + + if (opc) + { + opc->used++; + opcode = find_opcode (opc, operands, &nb_operands); + } + else + opcode = 0; + + if ((opcode || alias_id >= 0) && !flag_mri) + { + char *p = input_line_pointer; + + while (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r') + p++; + + if (*p != '\n' && *p) + as_bad (_("Garbage at end of instruction: `%s'."), p); + } + + input_line_pointer = save; + + if (alias_id >= 0) + { + char *f = m68hc11_new_insn (m68hc12_alias[alias_id].size); + + number_to_chars_bigendian (f, m68hc12_alias[alias_id].code1, 1); + if (m68hc12_alias[alias_id].size > 1) + number_to_chars_bigendian (f + 1, m68hc12_alias[alias_id].code2, 1); + + return; + } + + /* Opcode is known but does not have valid operands. Print out the + syntax for this opcode. */ + if (opcode == 0) + { + if (flag_print_insn_syntax) + print_insn_format (name); + + as_bad (_("Invalid operand for `%s'"), name); + return; + } + + /* Treat dbeq/ibeq/tbeq instructions in a special way. The branch is + relative and must be in the range -256..255 (9-bits). */ + if ((opcode->format & M6812_XBCC_MARKER) + && (opcode->format & M6811_OP_JUMP_REL)) + build_dbranch_insn (opcode, operands, nb_operands); + + /* Relative jumps instructions are taken care of separately. We have to make + sure that the relative branch is within the range -128..127. If it's out + of range, the instructions are changed into absolute instructions. + This is not supported for the brset and brclr instructions. */ + else if ((opcode->format & (M6811_OP_JUMP_REL | M6812_OP_JUMP_REL16)) + && !(opcode->format & M6811_OP_BITMASK)) + build_jump_insn (opcode, operands, nb_operands, branch_optimize); + else + build_insn (opcode, operands, nb_operands); +} + + +/* Relocation, relaxation and frag conversions. */ + +long +md_pcrel_from_section (fixp, sec) + fixS *fixp; + segT sec; +{ + int adjust; + if (fixp->fx_addsy != (symbolS *) NULL + && (!S_IS_DEFINED (fixp->fx_addsy) + || (S_GET_SEGMENT (fixp->fx_addsy) != sec))) + return 0; + + adjust = fixp->fx_pcrel_adjust; + return fixp->fx_frag->fr_address + fixp->fx_where + adjust; +} + +/* If while processing a fixup, a reloc really needs to be created + then it is done here. */ +arelent * +tc_gen_reloc (section, fixp) + asection *section; + fixS *fixp; +{ + arelent *reloc; + + reloc = (arelent *) xmalloc (sizeof (arelent)); + reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); + *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); + reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; + if (fixp->fx_r_type == 0) + reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_16); + else + reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type); + if (reloc->howto == (reloc_howto_type *) NULL) + { + as_bad_where (fixp->fx_file, fixp->fx_line, + _("Relocation %d is not supported by object file format."), + (int) fixp->fx_r_type); + return NULL; + } + + if (!fixp->fx_pcrel) + reloc->addend = fixp->fx_addnumber; + else + reloc->addend = (section->vma + + (fixp->fx_pcrel_adjust == 64 + ? -1 : fixp->fx_pcrel_adjust) + + fixp->fx_addnumber + + md_pcrel_from_section (fixp, section)); + return reloc; +} + +void +md_convert_frag (abfd, sec, fragP) + bfd *abfd ATTRIBUTE_UNUSED; + asection *sec ATTRIBUTE_UNUSED; + fragS *fragP; +{ + fixS *fixp; + long disp; + char *buffer_address = fragP->fr_literal; + + /* Address in object code of the displacement. */ + register int object_address = fragP->fr_fix + fragP->fr_address; + + buffer_address += fragP->fr_fix; + + /* The displacement of the address, from current location. */ + disp = fragP->fr_symbol ? S_GET_VALUE (fragP->fr_symbol) : 0; + disp = (disp + fragP->fr_offset) - object_address; + disp += symbol_get_frag (fragP->fr_symbol)->fr_address; + + switch (fragP->fr_subtype) + { + case ENCODE_RELAX (STATE_PC_RELATIVE, STATE_BYTE): + fragP->fr_opcode[1] = disp; + break; + + case ENCODE_RELAX (STATE_PC_RELATIVE, STATE_WORD): + /* This relax is only for bsr and bra. */ + assert (IS_OPCODE (fragP->fr_opcode[0], M6811_BSR) + || IS_OPCODE (fragP->fr_opcode[0], M6811_BRA) + || IS_OPCODE (fragP->fr_opcode[0], M6812_BSR)); + + fragP->fr_opcode[0] = convert_branch (fragP->fr_opcode[0]); + + fix_new (fragP, fragP->fr_fix - 1, 2, + fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_16); + fragP->fr_fix += 1; + break; + + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE): + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH_6812, STATE_BYTE): + fragP->fr_opcode[1] = disp; + break; + + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD): + /* Invert branch. */ + fragP->fr_opcode[0] ^= 1; + fragP->fr_opcode[1] = 3; /* Branch offset */ + buffer_address[0] = M6811_JMP; + fix_new (fragP, fragP->fr_fix + 1, 2, + fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_16); + fragP->fr_fix += 3; + break; + + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH_6812, STATE_WORD): + /* Translate branch into a long branch. */ + fragP->fr_opcode[1] = fragP->fr_opcode[0]; + fragP->fr_opcode[0] = M6811_OPCODE_PAGE2; + + fixp = fix_new (fragP, fragP->fr_fix, 2, + fragP->fr_symbol, fragP->fr_offset, 1, + BFD_RELOC_16_PCREL); + fixp->fx_pcrel_adjust = 2; + fragP->fr_fix += 2; + break; + + case ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_BITS5): + fragP->fr_opcode[0] = fragP->fr_opcode[0] << 5; + fragP->fr_opcode[0] |= disp & 0x1f; + break; + + case ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_BITS9): + fragP->fr_opcode[0] = (fragP->fr_opcode[0] << 3); + fragP->fr_opcode[0] |= 0xE0; + fix_new (fragP, fragP->fr_fix + 1, 1, + fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_8); + fragP->fr_fix += 1; + break; + + case ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_BITS16): + fragP->fr_opcode[0] = (fragP->fr_opcode[0] << 3); + fragP->fr_opcode[0] |= 0xE2; + fix_new (fragP, fragP->fr_fix, 2, + fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_16); + fragP->fr_fix += 1; + break; + + case ENCODE_RELAX (STATE_XBCC_BRANCH, STATE_BYTE): + if (disp < 0) + fragP->fr_opcode[0] |= 0x10; + + fragP->fr_opcode[1] = disp & 0x0FF; + break; + + case ENCODE_RELAX (STATE_XBCC_BRANCH, STATE_WORD): + /* Invert branch. */ + fragP->fr_opcode[0] ^= 0x20; + fragP->fr_opcode[1] = 3; /* Branch offset. */ + buffer_address[0] = M6812_JMP; + fix_new (fragP, fragP->fr_fix + 1, 2, + fragP->fr_symbol, fragP->fr_offset, 0, BFD_RELOC_16); + fragP->fr_fix += 3; + break; + + default: + break; + } +} + +/* Force truly undefined symbols to their maximum size, and generally set up + the frag list to be relaxed. */ +int +md_estimate_size_before_relax (fragP, segment) + fragS *fragP; + asection *segment; +{ + int old_fr_fix; + char *buffer_address = fragP->fr_fix + fragP->fr_literal; + + old_fr_fix = fragP->fr_fix; + + switch (fragP->fr_subtype) + { + case ENCODE_RELAX (STATE_PC_RELATIVE, STATE_UNDF): + + /* This relax is only for bsr and bra. */ + assert (IS_OPCODE (fragP->fr_opcode[0], M6811_BSR) + || IS_OPCODE (fragP->fr_opcode[0], M6811_BRA) + || IS_OPCODE (fragP->fr_opcode[0], M6812_BSR)); + + /* A relaxable case. */ + if (S_GET_SEGMENT (fragP->fr_symbol) == segment) + { + fragP->fr_subtype = ENCODE_RELAX (STATE_PC_RELATIVE, STATE_BYTE); + } + else + { + if (flag_fixed_branchs) + as_bad_where (fragP->fr_file, fragP->fr_line, + _("bra or bsr with undefined symbol.")); + + /* The symbol is undefined or in a separate section. Turn bra into a + jmp and bsr into a jsr. The insn becomes 3 bytes long (instead of + 2). A fixup is necessary for the unresolved symbol address. */ + + fragP->fr_opcode[0] = convert_branch (fragP->fr_opcode[0]); + + fragP->fr_fix++; + fix_new (fragP, old_fr_fix - 1, 2, fragP->fr_symbol, + fragP->fr_offset, 0, BFD_RELOC_16); + frag_wane (fragP); + } + break; + + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_UNDF): + assert (current_architecture & cpu6811); + + if (S_GET_SEGMENT (fragP->fr_symbol) == segment) + { + fragP->fr_subtype = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, + STATE_BYTE); + } + else + { + fragP->fr_opcode[0] ^= 1; /* Reverse sense of branch. */ + fragP->fr_opcode[1] = 3; /* Skip next jmp insn (3 bytes) */ + + /* Don't use fr_opcode[2] because this may be + in a different frag. */ + buffer_address[0] = M6811_JMP; + + fragP->fr_fix++; + fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, + fragP->fr_offset, 0, BFD_RELOC_16); + fragP->fr_fix += 2; + frag_wane (fragP); + } + break; + + case ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_UNDF): + assert (current_architecture & cpu6812); + + if (S_GET_SEGMENT (fragP->fr_symbol) == segment) + { + fragP->fr_subtype = ENCODE_RELAX (STATE_INDEXED_OFFSET, + STATE_BITS5); + } + else + { + /* Switch the indexed operation to 16-bit mode. */ + if ((fragP->fr_opcode[1] & 0x21) == 0x20) + fragP->fr_opcode[1] = (fragP->fr_opcode[1] >> 3) | 0xc0 | 0x02; + + fragP->fr_fix++; + fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, + fragP->fr_offset, 0, BFD_RELOC_16); + fragP->fr_fix += 2; + frag_wane (fragP); + } + break; + + case ENCODE_RELAX (STATE_XBCC_BRANCH, STATE_UNDF): + assert (current_architecture & cpu6812); + + if (S_GET_SEGMENT (fragP->fr_symbol) == segment) + { + fragP->fr_subtype = ENCODE_RELAX (STATE_XBCC_BRANCH, STATE_BYTE); + } + else + { + fragP->fr_opcode[0] ^= 0x20; /* Reverse sense of branch. */ + fragP->fr_opcode[1] = 3; /* Skip next jmp insn (3 bytes). */ + + /* Don't use fr_opcode[2] because this may be + in a different frag. */ + buffer_address[0] = M6812_JMP; + + fragP->fr_fix++; + fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, + fragP->fr_offset, 0, BFD_RELOC_16); + fragP->fr_fix += 2; + frag_wane (fragP); + } + break; + + case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH_6812, STATE_UNDF): + assert (current_architecture & cpu6812); + + if (S_GET_SEGMENT (fragP->fr_symbol) == segment) + { + fragP->fr_subtype = ENCODE_RELAX (STATE_CONDITIONAL_BRANCH_6812, + STATE_BYTE); + } + else + { + /* Translate into a lbcc branch. */ + fragP->fr_opcode[1] = fragP->fr_opcode[0]; + fragP->fr_opcode[0] = M6811_OPCODE_PAGE2; + + fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol, + fragP->fr_offset, 0, BFD_RELOC_16_PCREL); + fragP->fr_fix += 2; + frag_wane (fragP); + } + break; + + default: + as_fatal (_("Subtype %d is not recognized."), fragP->fr_subtype); + } + + return (fragP->fr_fix - old_fr_fix); +} + +int +md_apply_fix (fixp, valuep) + fixS *fixp; + valueT *valuep; +{ + char *where; + long value; + int op_type; + + if (fixp->fx_addsy == (symbolS *) NULL) + { + value = *valuep; + 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) + { + value -= S_GET_VALUE (fixp->fx_subsy); + } + else + { + /* We don't actually support subtracting a symbol. */ + as_bad_where (fixp->fx_file, fixp->fx_line, + _("Expression too complex.")); + } + } + } + + op_type = fixp->fx_r_type; + + /* Patch the instruction with the resolved operand. Elf relocation + info will also be generated to take care of linker/loader fixups. + The 68HC11 addresses only 64Kb, we are only concerned by 8 and 16-bit + relocs. BFD_RELOC_8 is basically used for .page0 access (the linker + will warn for overflows). BFD_RELOC_8_PCREL should not be generated + because it's either resolved or turned out into non-relative insns (see + relax table, bcc, bra, bsr transformations) + + The BFD_RELOC_32 is necessary for the support of --gstabs. */ + where = fixp->fx_frag->fr_literal + fixp->fx_where; + + switch (fixp->fx_r_type) + { + case BFD_RELOC_32: + bfd_putb32 ((bfd_vma) value, (unsigned char *) where); + break; + + case BFD_RELOC_16: + case BFD_RELOC_16_PCREL: + bfd_putb16 ((bfd_vma) value, (unsigned char *) where); + if (value < -65537 || value > 65535) + as_bad_where (fixp->fx_file, fixp->fx_line, + _("Value out of 16-bit range.")); + break; + + case BFD_RELOC_M68HC11_HI8: + value = value >> 8; + /* Fall through */ + + case BFD_RELOC_M68HC11_LO8: + case BFD_RELOC_8: + /*bfd_putb8 ((bfd_vma) value, (unsigned char *) where); */ + ((bfd_byte *) where)[0] = (bfd_byte) value; + break; + + case BFD_RELOC_8_PCREL: + /*bfd_putb8 ((bfd_vma) value, (unsigned char *) where); */ + ((bfd_byte *) where)[0] = (bfd_byte) value; + + if (value < -128 || value > 127) + as_bad_where (fixp->fx_file, fixp->fx_line, + _("Value %ld too large for 8-bit PC-relative branch."), + value); + break; + + case BFD_RELOC_M68HC11_3B: + if (value <= 0 || value > 8) + as_bad_where (fixp->fx_file, fixp->fx_line, + _("Auto increment/decrement offset '%ld' is out of range."), + value); + if (where[0] & 0x8) + value = 8 - value; + else + value--; + + where[0] = where[0] | (value & 0x07); + break; + + default: + as_fatal (_("Line %d: unknown relocation type: 0x%x."), + fixp->fx_line, fixp->fx_r_type); + } + return 0; +} + +int +m68hc11_cleanup () +{ + return 1; +} + +void +m68hc11_end_of_source () +{ + segT saved_seg; + subsegT saved_subseg; + segT debug_info; + char* p; + long total_size = 0; + + if (debug_type != DEBUG_DWARF2) + return; + + dwarf2_finish (); + + saved_seg = now_seg; + saved_subseg = now_subseg; + + debug_info = subseg_new (".debug_info", 0); + bfd_set_section_flags (stdoutput, debug_info, SEC_READONLY); + subseg_set (debug_info, 0); + p = frag_more (10); + total_size = 12; + +# define STUFF(val,size) md_number_to_chars (p, val, size); p += size; + STUFF (total_size, 4); /* Length of compilation unit. */ + STUFF (2, 2); /* Dwarf version */ + STUFF (0, 4); + STUFF (2, 1); /* Pointer size */ + STUFF (1, 1); /* Compile unit */ + STUFF (0, 4); + + now_subseg = saved_subseg; + now_seg = saved_seg; +} diff --git a/gas/config/tc-m68hc11.h b/gas/config/tc-m68hc11.h new file mode 100644 index 0000000..2d4466a --- /dev/null +++ b/gas/config/tc-m68hc11.h @@ -0,0 +1,109 @@ +/* tc-m68hc11.h -- Header file for tc-m68hc11.c. + Copyright (C) 1999, 2000 Free Software Foundation, Inc. + + This file is part of GAS, the GNU Assembler. + + GAS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GAS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + 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. */ + +#define TC_M68HC11 +#define TC_M68HC12 + +/* Define TC_M68K so that we can use the MRI mode. */ +#define TC_M68K + +#define TARGET_BYTES_BIG_ENDIAN 1 + +/* Motorola assembler specs does not require '.' before pseudo-ops. */ +#define NO_PSEUDO_DOT 1 + +#if 0 +/* Treat the single quote as a string delimiter. + ??? This does not work at all. */ +#define SINGLE_QUOTE_STRINGS 1 +#endif + +#ifndef BFD_ASSEMBLER +#error M68HC11 support requires BFD_ASSEMBLER +#endif + +/* The target BFD architecture. */ +#define TARGET_ARCH (m68hc11_arch ()) +extern enum bfd_architecture m68hc11_arch PARAMS ((void)); + +#define TARGET_MACH (m68hc11_mach ()) +extern int m68hc11_mach PARAMS ((void)); + +#define TARGET_FORMAT (m68hc11_arch_format ()) +extern const char *m68hc11_arch_format PARAMS ((void)); + +/* Specific sections: + - The .page0 is a data section that is mapped in [0x0000..0x00FF]. + Page0 accesses are faster on the M68HC11. Soft registers used by GCC-m6811 + are located in .page0. + - The .vectors is the data section that represents the interrupt + vectors. */ +#define ELF_TC_SPECIAL_SECTIONS \ + { ".page0", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, \ + { ".vectors", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, + +#define LISTING_WORD_SIZE 1 /* A word is 1 bytes */ +#define LISTING_LHS_WIDTH 4 /* One word on the first line */ +#define LISTING_LHS_WIDTH_SECOND 4 /* One word on the second line */ +#define LISTING_LHS_CONT_LINES 4 /* And 4 lines max */ +#define LISTING_HEADER "M68HC11 GAS " + +/* call md_pcrel_from_section, not md_pcrel_from */ +#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC) + +/* Permit temporary numeric labels. */ +#define LOCAL_LABELS_FB 1 + +#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ + +extern void m68hc11_init_after_args PARAMS ((void)); +#define tc_init_after_args m68hc11_init_after_args + +extern int m68hc11_parse_long_option PARAMS ((char *)); +#define md_parse_long_option m68hc11_parse_long_option + +extern void m68hc11_end_of_source PARAMS ((void)); +#define md_end() m68hc11_end_of_source () + +#define DWARF2_LINE_MIN_INSN_LENGTH 1 + +/* We don't need to handle .word strangely. */ +#define WORKING_DOT_WORD + +#define md_number_to_chars number_to_chars_bigendian + +/* Relax table to translate short relative branches (-128..127) into + absolute branches. */ +extern struct relax_type md_relax_table[]; +#define TC_GENERIC_RELAX_TABLE md_relax_table + +extern int m68hc11_cleanup PARAMS ((void)); + +#define md_operand(x) +#define md_after_pass_hook() m68hc11_cleanup() +#define md_cleanup() m68hc11_cleanup() +#define md_do_align(a,b,c,d,e) m68hc11_cleanup() +#define tc_frob_label(sym) do {\ + m68hc11_cleanup(); \ + S_SET_VALUE (sym, (valueT) frag_now_fix ()); \ +} while (0) + +#define tc_print_statistics m68hc11_print_statistics +extern void m68hc11_print_statistics PARAMS ((FILE *)); diff --git a/gas/configure b/gas/configure index 3e1cead..f6c7971 100755 --- a/gas/configure +++ b/gas/configure @@ -1660,6 +1660,7 @@ for this_target in $target $canon_targets ; do hppa*) cpu_type=hppa ;; i[456]86) cpu_type=i386 ;; ia64) cpu_type=ia64 ;; + m6811|m6812) cpu_type=m68hc11 ;; m680[012346]0) cpu_type=m68k ;; m68008) cpu_type=m68k ;; m683??) cpu_type=m68k ;; @@ -1811,6 +1812,8 @@ EOF m32r-*-*) fmt=elf bfd_gas=yes ;; + m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)fmt=elf bfd_gas=yes ;; + m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*) fmt=aout em=sun3 ;; m68k-motorola-sysv*) fmt=coff em=delta ;; @@ -2430,7 +2433,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:2434: checking for $ac_word" >&5 +echo "configure:2437: 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 @@ -2460,7 +2463,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:2464: checking for $ac_word" >&5 +echo "configure:2467: 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 @@ -2511,7 +2514,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:2515: checking for $ac_word" >&5 +echo "configure:2518: 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 @@ -2543,7 +2546,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2547: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2550: 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. @@ -2554,12 +2557,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 2558 "configure" +#line 2561 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2566: \"$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 @@ -2585,12 +2588,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:2589: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2592: 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:2594: checking whether we are using GNU C" >&5 +echo "configure:2597: 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 @@ -2599,7 +2602,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2603: \"$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:2606: \"$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 @@ -2618,7 +2621,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:2622: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2625: 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 @@ -2655,7 +2658,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:2659: checking for $ac_word" >&5 +echo "configure:2662: 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 @@ -2686,7 +2689,7 @@ done test -n "$YACC" || YACC="yacc" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2690: checking how to run the C preprocessor" >&5 +echo "configure:2693: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2701,13 +2704,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 2705 "configure" +#line 2708 "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:2711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2714: \"$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 : @@ -2718,13 +2721,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 2722 "configure" +#line 2725 "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:2728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2731: \"$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 : @@ -2735,13 +2738,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext <<EOF -#line 2739 "configure" +#line 2742 "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:2745: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2748: \"$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 : @@ -2771,7 +2774,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:2775: checking for $ac_word" >&5 +echo "configure:2778: 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 @@ -2804,7 +2807,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:2808: checking for $ac_word" >&5 +echo "configure:2811: 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 @@ -2838,7 +2841,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:2842: checking for yywrap in -l$ac_lib" >&5 +echo "configure:2845: 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 @@ -2846,7 +2849,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <<EOF -#line 2850 "configure" +#line 2853 "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 @@ -2857,7 +2860,7 @@ int main() { yywrap() ; return 0; } EOF -if { (eval echo configure:2861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2864: \"$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 @@ -2880,7 +2883,7 @@ fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:2884: checking lex output file root" >&5 +echo "configure:2887: 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 @@ -2901,7 +2904,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:2905: checking whether yytext is a pointer" >&5 +echo "configure:2908: 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 @@ -2913,14 +2916,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c ac_save_LIBS="$LIBS" LIBS="$LIBS $LEXLIB" cat > conftest.$ac_ext <<EOF -#line 2917 "configure" +#line 2920 "configure" #include "confdefs.h" `cat $LEX_OUTPUT_ROOT.c` int main() { ; return 0; } EOF -if { (eval echo configure:2924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2927: \"$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 @@ -2944,7 +2947,7 @@ fi ALL_LINGUAS= echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:2948: checking for POSIXized ISC" >&5 +echo "configure:2951: 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 @@ -2965,12 +2968,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2969: checking for ANSI C header files" >&5 +echo "configure:2972: 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 2974 "configure" +#line 2977 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -2978,7 +2981,7 @@ else #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2982: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2985: \"$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* @@ -2995,7 +2998,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 2999 "configure" +#line 3002 "configure" #include "confdefs.h" #include <string.h> EOF @@ -3013,7 +3016,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 3017 "configure" +#line 3020 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -3034,7 +3037,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext <<EOF -#line 3038 "configure" +#line 3041 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3045,7 +3048,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:3049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3069,12 +3072,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3073: checking for working const" >&5 +echo "configure:3076: 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 3078 "configure" +#line 3081 "configure" #include "confdefs.h" int main() { @@ -3123,7 +3126,7 @@ ccp = (char const *const *) p; ; return 0; } EOF -if { (eval echo configure:3127: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3144,21 +3147,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:3148: checking for inline" >&5 +echo "configure:3151: 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 3155 "configure" +#line 3158 "configure" #include "confdefs.h" int main() { } $ac_kw foo() { ; return 0; } EOF -if { (eval echo configure:3162: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -3184,12 +3187,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3188: checking for off_t" >&5 +echo "configure:3191: 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 3193 "configure" +#line 3196 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3217,12 +3220,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3221: checking for size_t" >&5 +echo "configure:3224: 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 3226 "configure" +#line 3229 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -3252,19 +3255,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:3256: checking for working alloca.h" >&5 +echo "configure:3259: 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 3261 "configure" +#line 3264 "configure" #include "confdefs.h" #include <alloca.h> int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3271: \"$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 @@ -3285,12 +3288,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3289: checking for alloca" >&5 +echo "configure:3292: 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 3294 "configure" +#line 3297 "configure" #include "confdefs.h" #ifdef __GNUC__ @@ -3318,7 +3321,7 @@ int main() { char *p = (char *) alloca(1); ; return 0; } EOF -if { (eval echo configure:3322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3325: \"$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 @@ -3350,12 +3353,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:3354: checking whether alloca needs Cray hooks" >&5 +echo "configure:3357: 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 3359 "configure" +#line 3362 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -3380,12 +3383,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:3384: checking for $ac_func" >&5 +echo "configure:3387: 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 3389 "configure" +#line 3392 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -3408,7 +3411,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:3412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3415: \"$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 @@ -3435,7 +3438,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:3439: checking stack direction for C alloca" >&5 +echo "configure:3442: 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 @@ -3443,7 +3446,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <<EOF -#line 3447 "configure" +#line 3450 "configure" #include "confdefs.h" find_stack_direction () { @@ -3462,7 +3465,7 @@ main () exit (find_stack_direction() < 0); } EOF -if { (eval echo configure:3466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3469: \"$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 @@ -3487,17 +3490,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:3491: checking for $ac_hdr" >&5 +echo "configure:3494: 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 3496 "configure" +#line 3499 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3504: \"$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* @@ -3526,12 +3529,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3530: checking for $ac_func" >&5 +echo "configure:3533: 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 3535 "configure" +#line 3538 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -3554,7 +3557,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:3558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3561: \"$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 @@ -3579,7 +3582,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3583: checking for working mmap" >&5 +echo "configure:3586: 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 @@ -3587,7 +3590,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <<EOF -#line 3591 "configure" +#line 3594 "configure" #include "confdefs.h" /* Thanks to Mike Haertel and Jim Avera for this test. @@ -3727,7 +3730,7 @@ main() } EOF -if { (eval echo configure:3731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3734: \"$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 @@ -3755,17 +3758,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:3759: checking for $ac_hdr" >&5 +echo "configure:3762: 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 3764 "configure" +#line 3767 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3772: \"$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* @@ -3795,12 +3798,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3799: checking for $ac_func" >&5 +echo "configure:3802: 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 3804 "configure" +#line 3807 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -3823,7 +3826,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:3827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3830: \"$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 @@ -3852,12 +3855,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3856: checking for $ac_func" >&5 +echo "configure:3859: 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 3861 "configure" +#line 3864 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -3880,7 +3883,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:3884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3887: \"$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 @@ -3914,19 +3917,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3918: checking for LC_MESSAGES" >&5 +echo "configure:3921: 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 3923 "configure" +#line 3926 "configure" #include "confdefs.h" #include <locale.h> int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:3930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3933: \"$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 @@ -3947,7 +3950,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3951: checking whether NLS is requested" >&5 +echo "configure:3954: 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" @@ -3967,7 +3970,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3971: checking whether included gettext is requested" >&5 +echo "configure:3974: 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" @@ -3986,17 +3989,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3990: checking for libintl.h" >&5 +echo "configure:3993: 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 3995 "configure" +#line 3998 "configure" #include "confdefs.h" #include <libintl.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4000: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4003: \"$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* @@ -4013,19 +4016,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:4017: checking for gettext in libc" >&5 +echo "configure:4020: 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 4022 "configure" +#line 4025 "configure" #include "confdefs.h" #include <libintl.h> int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:4029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4032: \"$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 @@ -4041,7 +4044,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:4045: checking for bindtextdomain in -lintl" >&5 +echo "configure:4048: 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 @@ -4049,7 +4052,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <<EOF -#line 4053 "configure" +#line 4056 "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 @@ -4060,7 +4063,7 @@ int main() { bindtextdomain() ; 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:4067: \"$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 @@ -4076,19 +4079,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:4080: checking for gettext in libintl" >&5 +echo "configure:4083: 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 4085 "configure" +#line 4088 "configure" #include "confdefs.h" int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:4092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4095: \"$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 @@ -4116,7 +4119,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:4120: checking for $ac_word" >&5 +echo "configure:4123: 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 @@ -4150,12 +4153,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4154: checking for $ac_func" >&5 +echo "configure:4157: 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 4159 "configure" +#line 4162 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4178,7 +4181,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:4182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4185: \"$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 @@ -4205,7 +4208,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:4209: checking for $ac_word" >&5 +echo "configure:4212: 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 @@ -4241,7 +4244,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:4245: checking for $ac_word" >&5 +echo "configure:4248: 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 @@ -4273,7 +4276,7 @@ else fi cat > conftest.$ac_ext <<EOF -#line 4277 "configure" +#line 4280 "configure" #include "confdefs.h" int main() { @@ -4281,7 +4284,7 @@ extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } EOF -if { (eval echo configure:4285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -4313,7 +4316,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:4317: checking for $ac_word" >&5 +echo "configure:4320: 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 @@ -4347,7 +4350,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:4351: checking for $ac_word" >&5 +echo "configure:4354: 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 @@ -4383,7 +4386,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:4387: checking for $ac_word" >&5 +echo "configure:4390: 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 @@ -4473,7 +4476,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:4477: checking for catalogs to be installed" >&5 +echo "configure:4480: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -4501,17 +4504,17 @@ echo "configure:4477: 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:4505: checking for linux/version.h" >&5 +echo "configure:4508: 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 4510 "configure" +#line 4513 "configure" #include "confdefs.h" #include <linux/version.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4515: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4518: \"$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* @@ -4574,7 +4577,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:4578: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:4581: 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" @@ -4597,12 +4600,12 @@ fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:4601: checking for Cygwin environment" >&5 +echo "configure:4604: 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 4606 "configure" +#line 4609 "configure" #include "confdefs.h" int main() { @@ -4613,7 +4616,7 @@ int main() { return __CYGWIN__; ; return 0; } EOF -if { (eval echo configure:4617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -4630,19 +4633,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:4634: checking for mingw32 environment" >&5 +echo "configure:4637: 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 4639 "configure" +#line 4642 "configure" #include "confdefs.h" int main() { return __MINGW32__; ; return 0; } EOF -if { (eval echo configure:4646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4649: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -4661,7 +4664,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:4665: checking for executable suffix" >&5 +echo "configure:4668: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4671,7 +4674,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:4675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:4678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj | *.ilk | *.pdb) ;; @@ -4696,17 +4699,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:4700: checking for $ac_hdr" >&5 +echo "configure:4703: 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 4705 "configure" +#line 4708 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4713: \"$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* @@ -4736,7 +4739,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:4740: checking whether compiling a cross-assembler" >&5 +echo "configure:4743: checking whether compiling a cross-assembler" >&5 if test "${host}" = "${target}"; then cross_gas=no else @@ -4751,19 +4754,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:4755: checking for working alloca.h" >&5 +echo "configure:4758: 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 4760 "configure" +#line 4763 "configure" #include "confdefs.h" #include <alloca.h> int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:4767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4770: \"$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 @@ -4784,12 +4787,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:4788: checking for alloca" >&5 +echo "configure:4791: 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 4793 "configure" +#line 4796 "configure" #include "confdefs.h" #ifdef __GNUC__ @@ -4817,7 +4820,7 @@ int main() { char *p = (char *) alloca(1); ; return 0; } EOF -if { (eval echo configure:4821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4824: \"$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 @@ -4849,12 +4852,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:4853: checking whether alloca needs Cray hooks" >&5 +echo "configure:4856: 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 4858 "configure" +#line 4861 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -4879,12 +4882,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:4883: checking for $ac_func" >&5 +echo "configure:4886: 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 4888 "configure" +#line 4891 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -4907,7 +4910,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:4911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4914: \"$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 @@ -4934,7 +4937,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:4938: checking stack direction for C alloca" >&5 +echo "configure:4941: 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 @@ -4942,7 +4945,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <<EOF -#line 4946 "configure" +#line 4949 "configure" #include "confdefs.h" find_stack_direction () { @@ -4961,7 +4964,7 @@ main () exit (find_stack_direction() < 0); } EOF -if { (eval echo configure:4965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4968: \"$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 @@ -4983,21 +4986,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:4987: checking for inline" >&5 +echo "configure:4990: 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 4994 "configure" +#line 4997 "configure" #include "confdefs.h" int main() { } $ac_kw foo() { ; return 0; } EOF -if { (eval echo configure:5001: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -5027,12 +5030,12 @@ esac for ac_func in unlink remove do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5031: checking for $ac_func" >&5 +echo "configure:5034: 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 5036 "configure" +#line 5039 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5055,7 +5058,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5062: \"$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 @@ -5084,12 +5087,12 @@ done for ac_func in sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5088: checking for $ac_func" >&5 +echo "configure:5091: 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 5093 "configure" +#line 5096 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -5112,7 +5115,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:5116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5119: \"$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 @@ -5141,12 +5144,12 @@ done # 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:5145: checking for working assert macro" >&5 +echo "configure:5148: 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 5150 "configure" +#line 5153 "configure" #include "confdefs.h" #include <assert.h> #include <stdio.h> @@ -5162,7 +5165,7 @@ assert (a == b ; return 0; } EOF -if { (eval echo configure:5166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_assert_ok=yes else @@ -5203,12 +5206,12 @@ gas_test_headers=" " echo $ac_n "checking whether declaration is required for strstr""... $ac_c" 1>&6 -echo "configure:5207: checking whether declaration is required for strstr" >&5 +echo "configure:5210: 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 5212 "configure" +#line 5215 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -5219,7 +5222,7 @@ x = (f) strstr; ; return 0; } EOF -if { (eval echo configure:5223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5226: \"$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 @@ -5240,12 +5243,12 @@ fi echo $ac_n "checking whether declaration is required for malloc""... $ac_c" 1>&6 -echo "configure:5244: checking whether declaration is required for malloc" >&5 +echo "configure:5247: 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 5249 "configure" +#line 5252 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -5256,7 +5259,7 @@ x = (f) malloc; ; return 0; } EOF -if { (eval echo configure:5260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5263: \"$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 @@ -5277,12 +5280,12 @@ fi echo $ac_n "checking whether declaration is required for free""... $ac_c" 1>&6 -echo "configure:5281: checking whether declaration is required for free" >&5 +echo "configure:5284: 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 5286 "configure" +#line 5289 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -5293,7 +5296,7 @@ x = (f) free; ; return 0; } EOF -if { (eval echo configure:5297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5300: \"$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 @@ -5314,12 +5317,12 @@ fi echo $ac_n "checking whether declaration is required for sbrk""... $ac_c" 1>&6 -echo "configure:5318: checking whether declaration is required for sbrk" >&5 +echo "configure:5321: 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 5323 "configure" +#line 5326 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -5330,7 +5333,7 @@ x = (f) sbrk; ; return 0; } EOF -if { (eval echo configure:5334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5337: \"$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 @@ -5351,12 +5354,12 @@ fi echo $ac_n "checking whether declaration is required for environ""... $ac_c" 1>&6 -echo "configure:5355: checking whether declaration is required for environ" >&5 +echo "configure:5358: 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 5360 "configure" +#line 5363 "configure" #include "confdefs.h" $gas_test_headers int main() { @@ -5367,7 +5370,7 @@ x = (f) environ; ; return 0; } EOF -if { (eval echo configure:5371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5374: \"$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 @@ -5391,12 +5394,12 @@ fi # for it? echo $ac_n "checking whether declaration is required for errno""... $ac_c" 1>&6 -echo "configure:5395: checking whether declaration is required for errno" >&5 +echo "configure:5398: 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 5400 "configure" +#line 5403 "configure" #include "confdefs.h" #ifdef HAVE_ERRNO_H @@ -5411,7 +5414,7 @@ x = (f) errno; ; return 0; } EOF -if { (eval echo configure:5415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5418: \"$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/gas/configure.in b/gas/configure.in index f322cb0..30b7f6d 100644 --- a/gas/configure.in +++ b/gas/configure.in @@ -122,6 +122,7 @@ changequote([,])dnl changequote(,)dnl i[456]86) cpu_type=i386 ;; ia64) cpu_type=ia64 ;; + m6811|m6812) cpu_type=m68hc11 ;; m680[012346]0) cpu_type=m68k ;; changequote([,])dnl m68008) cpu_type=m68k ;; @@ -274,6 +275,8 @@ changequote([,])dnl m32r-*-*) fmt=elf bfd_gas=yes ;; + m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)fmt=elf bfd_gas=yes ;; + m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*) fmt=aout em=sun3 ;; m68k-motorola-sysv*) fmt=coff em=delta ;; diff --git a/gas/doc/Makefile.am b/gas/doc/Makefile.am index c6eaf77..65d7d6e 100644 --- a/gas/doc/Makefile.am +++ b/gas/doc/Makefile.am @@ -26,6 +26,7 @@ CPU_DOCS = \ c-i386.texi \ c-i960.texi \ c-m32r.texi \ + c-m68hc11.texi \ c-m68k.texi \ c-mips.texi \ c-ns32k.texi \ diff --git a/gas/doc/Makefile.in b/gas/doc/Makefile.in index 48f4e08..6336678 100644 --- a/gas/doc/Makefile.in +++ b/gas/doc/Makefile.in @@ -129,6 +129,7 @@ CPU_DOCS = \ c-i386.texi \ c-i960.texi \ c-m32r.texi \ + c-m68hc11.texi \ c-m68k.texi \ c-mips.texi \ c-ns32k.texi \ @@ -164,7 +165,7 @@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar +TAR = gtar GZIP_ENV = --best all: all-redirect .SUFFIXES: diff --git a/gas/doc/all.texi b/gas/doc/all.texi index d1058fb..14f735d 100644 --- a/gas/doc/all.texi +++ b/gas/doc/all.texi @@ -37,6 +37,7 @@ @set I80386 @set I960 @set M32R +@set M68HC11 @set M680X0 @set MCORE @set MIPS diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index 20efcd3..62f8868 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -267,6 +267,11 @@ Here is a brief summary of how to invoke @code{@value{AS}}. For details, [ -jsri2bsr ] [ -sifilter ] [ -relax ] [ -mcpu=[210|340] ] @end ifset +@ifset M68HC11 + [ -m68hc11 | -m68hc12 ] + [ --force-long-branchs ] [ --short-branchs ] [ --strict-direct-mode ] + [ --print-insn-syntax ] [ --print-opcodes ] [ --generate-example ] +@end ifset @ifset MIPS [ -nocpp ] [ -EL ] [ -EB ] [ -G @var{num} ] [ -mcpu=@var{CPU} ] [ -mips1 ] [ -mips2 ] [ -mips3 ] [ -m4650 ] [ -no-m4650 ] @@ -558,6 +563,42 @@ Generate ``little endian'' format output. @end table @end ifset +@ifset M68HC11 +The following options are available when @value{AS} is configured for the +Motorola 68HC11 or 68HC12 series. + +@table @code + +@item -m68hc11 | -m68hc12 +Specify what processor is the target. The default is +defined by the configuration option when building the assembler. + +@item --force-long-branchs +Relative branches are turned into absolute ones. This concerns +conditional branches, unconditional branches and branches to a +sub routine. + +@item -S | --short-branchs +Do not turn relative branchs into absolute ones +when the offset is out of range. + +@item --strict-direct-mode +Do not turn the direct addressing mode into extended addressing mode +when the instruction does not support direct addressing mode. + +@item --print-insn-syntax +Print the syntax of instruction in case of error. + +@item --print-opcodes +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}}. + +@end table +@end ifset + @ifset SPARC The following options are available when @code{@value{AS}} is configured for the SPARC architecture: @@ -1614,6 +1655,9 @@ is considered a comment and is ignored. The line comment character is @ifset M680X0 @samp{|} on the 680x0; @end ifset +@ifset M68HC11 +@samp{#} on the 68HC11 and 68HC12; +@end ifset @ifset VAX @samp{#} on the Vax; @end ifset @@ -4972,6 +5016,9 @@ subject, see the hardware manufacturer's manual. @ifset M680X0 * M68K-Dependent:: M680x0 Dependent Features @end ifset +@ifset M68HC11 +* M68HC11-Dependent:: M68HC11 and 68HC12 Dependent Features +@end ifset @ifset MIPS * MIPS-Dependent:: MIPS Dependent Features @end ifset @@ -5150,6 +5197,10 @@ family. @include c-m68k.texi @end ifset +@ifset M68HC11 +@include c-m68hc11.texi +@end ifset + @ifset MIPS @include c-mips.texi @end ifset diff --git a/gas/doc/c-m68hc11.texi b/gas/doc/c-m68hc11.texi new file mode 100644 index 0000000..df80f8d --- /dev/null +++ b/gas/doc/c-m68hc11.texi @@ -0,0 +1,235 @@ +@c Copyright (C) 1991, 92, 93, 94, 95, 96, 1997 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 M68HC11-Dependent +@chapter M68HC11 and M68HC12 Dependent Features +@end ifset +@ifclear GENERIC +@node Machine Dependencies +@chapter M68HC11 and M68HC12 Dependent Features +@end ifclear + +@cindex M68HC11 and M68HC12 support +@menu +* M68HC11-Opts:: M68HC11 and M68HC12 Options +* M68HC11-Syntax:: Syntax +* M68HC11-Float:: Floating Point +* M68HC11-opcodes:: Opcodes +@end menu + +@node M68HC11-Opts +@section M68HC11 and M68HC12 Options + +@cindex options, M68HC11 +@cindex M68HC11 options +The Motorola 68HC11 and 68HC12 version of @code{@value{AS}} has a few machine +dependent options. + +@cindex @samp{-m68hc11} +This option switches the assembler in the M68HC11 mode. In this mode, +the assembler only accepts 68HC11 operands and mnemonics. It produces +code for the 68HC11. + +@cindex @samp{-m68hc12} +This option switches the assembler in the M68HC12 mode. In this mode, +the assembler also accepts 68HC12 operands and mnemonics. It produces +code for the 68HC12. A fiew 68HC11 instructions are replaced by +some 68HC12 instructions as recommended by Motorola specifications. + +@cindex @samp{--strict-direct-mode} +You can use the @samp{--strict-direct-mode} option to disable +the automatic translation of direct page mode addressing into +extended mode when the instruction does not support direct mode. +For example, the @samp{clr} instruction does not support direct page +mode addressing. When it is used with the direct page mode, +@code{@value{AS}} will ignore it and generate an absolute addressing. +This option prevents @code{@value{AS}} from doing this, and the wrong +usage of the direct page mode will raise an error. + +@cindex @samp{--short-branchs} +The @samp{--short-branchs} option turns off the translation of +relative branches into absolute branches when the branch offset is +out of range. By default @code{@value{AS}} transforms the relative +branch (@samp{bsr}, @samp{bgt}, @samp{bge}, @samp{beq}, @samp{bne}, +@samp{ble}, @samp{blt}, @samp{bhi}, @samp{bcc}, @samp{bls}, +@samp{bcs}, @samp{bmi}, @samp{bvs}, @samp{bvs}, @samp{bra}) into +an absolute branch when the offset is out of the -128 .. 127 range. +In that case, the @samp{bsr} instruction is translated into a +@samp{jsr}, the @samp{bra} instruction is translated into a +@samp{jmp} and the conditional branchs instructions are inverted and +followed by a @samp{jmp}. This option disables these translations +and @code{@value{AS}} will generate an error if a relative branch +is out of range. This option does not affect the optimization +associated to the @samp{jbra}, @samp{jbsr} and @samp{jbXX} pseudo opcodes. + +@cindex @samp{--force-long-branchs} +The @samp{--force-long-branchs} option forces the translation of +relative branches into absolute branches. This option does not affect +the optimization associated to the @samp{jbra}, @samp{jbsr} and +@samp{jbXX} pseudo opcodes. + +@cindex @samp{--print-insn-syntax} +You can use the @samp{--print-insn-syntax} option to obtain the +syntax description of the instruction when an error is detected. + +@cindex @samp{--print-opcodes} +The @samp{--print-opcodes} option prints the list of all the +instructions with their syntax. The first item of each line +represents the instruction name and the rest of the line indicates +the possible operands for that instruction. The list is printed +in alphabetical order. Once the list is printed @code{@value{AS}} +exits. + +@cindex @samp{--generate-example} +The @samp{--generate-example} option is similar to @samp{--print-opcodes} +but it generates an example for each instruction instead. + +@node M68HC11-Syntax +@section Syntax + +@cindex M68HC11 syntax +@cindex syntax, M68HC11 + +In the M68HC11 syntax, the instruction name comes first and it may +be followed by one or several operands (up to three). Operands are +separated by comma (@samp{,}). In the normal mode, +@code{@value{AS}} will complain if too many operands are specified for +a given instruction. In the MRI mode (turned on with @samp{-M} option), +it will treat them as comments. Example: + +@smallexample +inx +lda #23 +bset 2,x #4 +brclr *bot #8 foo +@end smallexample + +@cindex M68HC11 addressing modes +@cindex addressing modes, M68HC11 +The following addressing modes are understood: +@table @dfn +@item Immediate +@samp{#@var{number}} + +@item Address Register +@samp{@var{number},X}, @samp{@var{number},Y} + +The @var{number} may be omitted in which case 0 is assumed. + +@item Direct Addressing mode +@samp{*@var{symbol}}, or @samp{*@var{digits}} + +@item Absolute +@samp{@var{symbol}}, or @samp{@var{digits}} +@end table + +@node M68HC11-Float +@section Floating Point + +@cindex floating point, M68HC11 +@cindex M68HC11 floating point +Packed decimal (P) format floating literals are not supported. +Feel free to add the code! + +The floating point formats generated by directives are these. + +@table @code +@cindex @code{float} directive, M68HC11 +@item .float +@code{Single} precision floating point constants. + +@cindex @code{double} directive, M68HC11 +@item .double +@code{Double} precision floating point constants. + +@cindex @code{extend} directive M68HC11 +@cindex @code{ldouble} directive M68HC11 +@item .extend +@itemx .ldouble +@code{Extended} precision (@code{long double}) floating point constants. +@end table + +@need 2000 +@node M68HC11-opcodes +@section Opcodes + +@cindex M68HC11 opcodes +@cindex opcodes, M68HC11 +@cindex instruction set, M68HC11 + +@menu +* M68HC11-Branch:: Branch Improvement +@end menu + +@node M68HC11-Branch +@subsection Branch Improvement + +@cindex pseudo-opcodes, M68HC11 +@cindex M68HC11 pseudo-opcodes +@cindex branch improvement, M68HC11 +@cindex M68HC11 branch improvement + +Certain pseudo opcodes are permitted for branch instructions. +They expand to the shortest branch instruction that reach the +target. Generally these mnemonics are made by prepending @samp{j} to +the start of Motorola mnemonic. These pseudo opcodes are not affected +by the @samp{--short-branchs} or @samp{--force-long-branchs} options. + +The following table summarizes the pseudo-operations. + +@smallexample + Displacement Width + +-------------------------------------------------------------+ + | Options | + | --short-branchs --force-long-branchs | + +--------------------------+----------------------------------+ +Pseudo-Op |BYTE WORD | BYTE WORD | + +--------------------------+----------------------------------+ + bsr | bsr <pc-rel> <error> | jsr <abs> | + bra | bra <pc-rel> <error> | jmp <abs> | + jbsr | bsr <pc-rel> jsr <abs> | bsr <pc-rel> jsr <abs> | + jbra | bra <pc-rel> jmp <abs> | bra <pc-rel> jmp <abs> | + bXX | bXX <pc-rel> <error> | bNX +3; jmp <abs> | + jbXX | bXX <pc-rel> bNX +3; | bXX <pc-rel> bNX +3; jmp <abs> | + | jmp <abs> | | + +--------------------------+----------------------------------+ +XX: condition +NX: negative of condition XX + +@end smallexample + +@table @code +@item jbsr +@itemx jbra +These are the simplest jump pseudo-operations; they always map to one +particular machine instruction, depending on the displacement to the +branch target. + +@item jb@var{XX} +Here, @samp{jb@var{XX}} stands for an entire family of pseudo-operations, +where @var{XX} is a conditional branch or condition-code test. The full +list of pseudo-ops in this family is: +@smallexample + jbcc jbeq jbge jbgt jbhi jbvs jbpl jblo + jbcs jbne jblt jble jbls jbvc jbmi +@end smallexample + +For the cases of non-PC relative displacements and long displacements, +@code{@value{AS}} issues a longer code fragment in terms of +@var{NX}, the opposite condition to @var{XX}. For example, for the +non-PC relative case: +@smallexample + jb@var{XX} foo +@end smallexample +gives +@smallexample + b@var{NX}s oof + jmp foo + oof: +@end smallexample + +@end table + + @@ -541,8 +541,8 @@ integer_constant (radix, expressionP) } } - if ((NUMBERS_WITH_SUFFIX || flag_m68k_mri) - && suffix != NULL + if ((NUMBERS_WITH_SUFFIX || flag_m68k_mri) + && suffix != NULL && input_line_pointer - 1 == suffix) c = *input_line_pointer++; @@ -815,7 +815,7 @@ operand (expressionP) case '9': input_line_pointer--; - integer_constant ((NUMBERS_WITH_SUFFIX || flag_m68k_mri) + integer_constant ((NUMBERS_WITH_SUFFIX || flag_m68k_mri) ? 0 : 10, expressionP); break; diff --git a/gas/po/POTFILES.in b/gas/po/POTFILES.in index 0e420b3..c5d9d4a 100644 --- a/gas/po/POTFILES.in +++ b/gas/po/POTFILES.in @@ -46,6 +46,8 @@ config/tc-arc.c config/tc-arc.h config/tc-arm.c config/tc-arm.h +config/tc-avr.c +config/tc-avr.h config/tc-d10v.c config/tc-d10v.h config/tc-d30v.c @@ -66,8 +68,12 @@ config/tc-i860.c config/tc-i860.h config/tc-i960.c config/tc-i960.h +config/tc-ia64.c +config/tc-ia64.h config/tc-m32r.c config/tc-m32r.h +config/tc-m68hc11.c +config/tc-m68hc11.h config/tc-m68k.c config/tc-m68k.h config/tc-m88k.c @@ -114,18 +120,18 @@ ecoff.c ecoff.h ehopt.c ehopt.c -emul-target.h emul.h +emul-target.h expr.c expr.c expr.h flonum-copy.c flonum-copy.c +flonum.h flonum-konst.c flonum-konst.c flonum-mult.c flonum-mult.c -flonum.h frags.c frags.c frags.h diff --git a/gas/po/gas.pot b/gas/po/gas.pot index eb90adc..7e02403 100644 --- a/gas/po/gas.pot +++ b/gas/po/gas.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2000-04-04 23:20+0930\n" +"POT-Creation-Date: 2000-06-18 18:12-0700\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" @@ -14,48 +14,48 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" -#: app.c:466 app.c:480 +#: app.c:465 app.c:479 msgid "end of file in comment" msgstr "" -#: app.c:559 +#: app.c:558 msgid "end of file in string: inserted '\"'" msgstr "" -#: app.c:625 +#: app.c:624 #, c-format msgid "Unknown escape '\\%c' in string: Ignored" msgstr "" -#: app.c:634 +#: app.c:633 msgid "End of file in string: '\"' inserted" msgstr "" -#: app.c:754 +#: app.c:753 msgid "end of file not at end of a line; newline inserted" msgstr "" -#: app.c:911 +#: app.c:910 msgid "end of file in multiline comment" msgstr "" -#: app.c:960 +#: app.c:974 msgid "end of file after a one-character quote; \\0 inserted" msgstr "" -#: app.c:968 +#: app.c:982 msgid "end of file in escape character" msgstr "" -#: app.c:980 +#: app.c:994 msgid "Missing close quote: (assumed)" msgstr "" -#: app.c:1043 app.c:1097 app.c:1166 +#: app.c:1057 app.c:1111 app.c:1180 msgid "end of file in comment; newline inserted" msgstr "" -#: app.c:1107 +#: app.c:1121 msgid "EOF in Comment: Newline inserted" msgstr "" @@ -260,7 +260,7 @@ msgid "GNU assembler %s\n" msgstr "" #: as.c:517 -msgid "Copyright 1997 Free Software Foundation, Inc.\n" +msgid "Copyright 2000 Free Software Foundation, Inc.\n" msgstr "" #: as.c:518 gasp.c:3648 @@ -311,31 +311,31 @@ msgstr "" msgid "bad defsym; format is --defsym name=value" msgstr "" -#: as.c:575 +#: as.c:579 msgid "No file name following -t option\n" msgstr "" -#: as.c:591 +#: as.c:595 #, c-format msgid "Failed to read instruction table %s\n" msgstr "" -#: as.c:705 +#: as.c:712 #, c-format msgid "invalid listing option `%c'" msgstr "" -#: as.c:899 +#: as.c:906 #, c-format msgid "%d warnings, treating warnings as errors" msgstr "" -#: as.c:930 +#: as.c:937 #, c-format msgid "%s: total time in assembly: %ld.%06ld\n" msgstr "" -#: as.c:933 +#: as.c:940 #, c-format msgid "%s: data size %ld\n" msgstr "" @@ -345,8 +345,8 @@ msgstr "" #. * This should never happen. #. #: atof-generic.c:438 config/tc-a29k.c:544 config/tc-i860.c:335 -#: config/tc-i860.c:708 config/tc-m68k.c:3124 config/tc-m68k.c:3153 -#: config/tc-sparc.c:2462 +#: config/tc-i860.c:708 config/tc-m68k.c:3122 config/tc-m68k.c:3151 +#: config/tc-sparc.c:2478 msgid "failed sanity check." msgstr "" @@ -424,7 +424,7 @@ msgstr "" msgid "Attempt to put an undefined symbol into set %s" msgstr "" -#: config/obj-aout.c:198 config/obj-coff.c:1204 config/obj-elf.c:1675 +#: config/obj-aout.c:198 config/obj-coff.c:1204 config/obj-elf.c:1706 #: ecoff.c:3668 #, c-format msgid "Symbol `%s' can not be both weak and common" @@ -552,12 +552,12 @@ msgstr "" msgid "unsupported section attribute '%c'" msgstr "" -#: config/obj-coff.c:1410 config/obj-coff.c:3668 config/tc-ppc.c:3791 +#: config/obj-coff.c:1410 config/obj-coff.c:3668 config/tc-ppc.c:3917 #, c-format msgid "unknown section attribute '%c'" msgstr "" -#: config/obj-coff.c:1432 config/tc-ppc.c:3809 read.c:2504 +#: config/obj-coff.c:1432 config/tc-ppc.c:3935 read.c:2502 #, c-format msgid "error setting flags for \"%s\": %s" msgstr "" @@ -595,11 +595,11 @@ msgstr "" msgid "Too many new sections; can't add \"%s\"" msgstr "" -#: config/obj-coff.c:3986 config/tc-m88k.c:1260 config/tc-sparc.c:3354 +#: config/obj-coff.c:3986 config/tc-m88k.c:1260 config/tc-sparc.c:3454 msgid "Expected comma after name" msgstr "" -#: config/obj-coff.c:3992 read.c:1967 +#: config/obj-coff.c:3992 read.c:1965 msgid "Missing size expression" msgstr "" @@ -608,7 +608,7 @@ msgstr "" msgid "lcomm length (%d.) <0! Ignored." msgstr "" -#: config/obj-coff.c:4026 read.c:2188 +#: config/obj-coff.c:4026 read.c:2186 #, c-format msgid "Symbol %s already defined" msgstr "" @@ -649,140 +649,150 @@ msgstr "" msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx" msgstr "" -#: config/obj-ecoff.c:240 +#: config/obj-ecoff.c:241 msgid "Can't set GP value" msgstr "" -#: config/obj-ecoff.c:247 +#: config/obj-ecoff.c:248 msgid "Can't set register masks" msgstr "" -#: config/obj-elf.c:299 config/tc-sparc.c:3495 config/tc-v850.c:263 +#: config/obj-elf.c:310 config/tc-sparc.c:3595 config/tc-v850.c:263 msgid "Expected comma after symbol-name" msgstr "" -#: config/obj-elf.c:306 config/tc-arc.c:779 config/tc-sparc.c:3502 +#: config/obj-elf.c:317 config/tc-arc.c:779 config/tc-sparc.c:3602 #, c-format msgid ".COMMon length (%d.) <0! Ignored." msgstr "" -#: config/obj-elf.c:316 config/tc-alpha.c:4320 config/tc-sparc.c:3512 +#: config/obj-elf.c:327 config/tc-alpha.c:4320 config/tc-sparc.c:3612 #: config/tc-v850.c:285 msgid "Ignoring attempt to re-define symbol" msgstr "" -#: config/obj-elf.c:324 config/tc-arc.c:797 config/tc-sparc.c:3520 +#: config/obj-elf.c:335 config/tc-arc.c:797 config/tc-sparc.c:3620 #: config/tc-v850.c:295 #, c-format msgid "Length of .comm \"%s\" is already %ld. Not changed to %d." msgstr "" -#: config/obj-elf.c:347 config/tc-arc.c:816 config/tc-v850.c:322 +#: config/obj-elf.c:358 config/tc-arc.c:816 config/tc-v850.c:322 msgid "Common alignment negative; 0 assumed" msgstr "" -#: config/obj-elf.c:366 config/tc-m32r.c:1269 config/tc-ppc.c:1396 +#: config/obj-elf.c:377 config/tc-m32r.c:1269 config/tc-ppc.c:1514 #: config/tc-v850.c:385 msgid "Common alignment not a power of 2" msgstr "" -#: config/obj-elf.c:429 config/tc-arc.c:876 config/tc-sparc.c:3644 -#: config/tc-v850.c:563 +#: config/obj-elf.c:440 config/tc-arc.c:876 config/tc-sparc.c:3744 +#: config/tc-v850.c:566 #, c-format msgid "bad .common segment %s" msgstr "" -#: config/obj-elf.c:658 +#: config/obj-elf.c:668 #, c-format 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:726 +#: config/obj-elf.c:727 +#, c-format +msgid "Ignoring changed section attributes for %s" +msgstr "" + +#: config/obj-elf.c:757 msgid "Unrecognized .section attribute: want a,w,x" msgstr "" -#: config/obj-elf.c:766 +#: config/obj-elf.c:797 msgid "Unrecognized section attribute" msgstr "" -#: config/obj-elf.c:788 +#: config/obj-elf.c:819 msgid "Unrecognized section type" msgstr "" -#: config/obj-elf.c:839 +#: config/obj-elf.c:870 msgid "Missing section name" msgstr "" -#: config/obj-elf.c:905 +#: config/obj-elf.c:936 msgid "Bad .section directive - character following name is not '#'" msgstr "" -#: config/obj-elf.c:1006 +#: config/obj-elf.c:1037 msgid ".previous without corresponding .section; ignored" msgstr "" -#: config/obj-elf.c:1033 +#: config/obj-elf.c:1064 msgid ".popsection without corresponding .pushsection; ignored" msgstr "" -#: config/obj-elf.c:1085 +#: config/obj-elf.c:1116 #, c-format msgid "multiple .symver directives for symbol `%s'" msgstr "" -#: config/obj-elf.c:1094 +#: config/obj-elf.c:1125 msgid "expected comma after name in .symver" msgstr "" -#: config/obj-elf.c:1115 +#: config/obj-elf.c:1146 #, c-format msgid "missing version name in `%s' for symbol `%s'" msgstr "" -#: config/obj-elf.c:1324 config/obj-som.c:148 config/obj-som.c:193 +#: config/obj-elf.c:1355 config/obj-som.c:149 config/obj-som.c:194 msgid "Expected quoted string" msgstr "" -#: config/obj-elf.c:1345 +#: config/obj-elf.c:1376 #, c-format msgid "expected comma after name `%s' in .size directive" msgstr "" -#: config/obj-elf.c:1354 +#: config/obj-elf.c:1385 msgid "missing expression in .size directive" msgstr "" -#: config/obj-elf.c:1421 +#: config/obj-elf.c:1452 #, c-format msgid "ignoring unrecognized symbol type \"%s\"" msgstr "" -#: config/obj-elf.c:1599 +#: config/obj-elf.c:1630 msgid ".size expression too complicated to fix up" msgstr "" -#: config/obj-elf.c:1630 +#: config/obj-elf.c:1661 #, c-format msgid "" "invalid attempt to declare external version name as default in symbol `%s'" msgstr "" -#: config/obj-elf.c:1762 +#: config/obj-elf.c:1793 #, c-format msgid "Failed to set up debugging information: %s" msgstr "" -#: config/obj-elf.c:1782 +#: config/obj-elf.c:1813 #, c-format msgid "Can't start writing .mdebug section: %s" msgstr "" -#: config/obj-elf.c:1790 +#: config/obj-elf.c:1821 #, c-format msgid "Could not write .mdebug section: %s" msgstr "" @@ -791,20 +801,20 @@ msgstr "" msgid "too many sections" msgstr "" -#: config/obj-som.c:131 +#: config/obj-som.c:132 msgid "Only one .version pseudo-op per file!" msgstr "" -#: config/obj-som.c:157 +#: config/obj-som.c:158 #, c-format msgid "FATAL: Attaching version header %s" msgstr "" -#: config/obj-som.c:176 +#: config/obj-som.c:177 msgid "Only one .copyright pseudo-op per file!" msgstr "" -#: config/obj-som.c:202 +#: config/obj-som.c:203 #, c-format msgid "FATAL: Attaching copyright header %s" msgstr "" @@ -955,26 +965,27 @@ msgstr "" msgid "unhandled stab type %d" msgstr "" -#: config/tc-a29k.c:160 config/tc-sparc.c:3696 +#: config/tc-a29k.c:160 config/tc-sparc.c:3796 msgid "Unknown segment type" msgstr "" #. Probably a memory allocation problem? Give up now. -#: config/tc-a29k.c:330 config/tc-hppa.c:1387 config/tc-i860.c:202 -#: config/tc-mips.c:1062 config/tc-mips.c:1104 config/tc-sparc.c:789 +#: config/tc-a29k.c:330 config/tc-hppa.c:1401 config/tc-i860.c:202 +#: config/tc-mips.c:1062 config/tc-mips.c:1104 config/tc-sparc.c:806 msgid "Broken assembler. No assembly attempted." msgstr "" -#: config/tc-a29k.c:375 config/tc-arc.c:535 config/tc-d10v.c:507 -#: config/tc-d30v.c:553 config/tc-h8300.c:305 config/tc-h8500.c:297 -#: config/tc-mcore.c:656 config/tc-mn10200.c:935 config/tc-mn10300.c:1296 -#: config/tc-ppc.c:1852 config/tc-sh.c:632 config/tc-tic80.c:291 -#: config/tc-v850.c:2033 config/tc-w65.c:257 config/tc-z8k.c:341 +#: config/tc-a29k.c:375 config/tc-arc.c:535 config/tc-avr.c:1045 +#: config/tc-d10v.c:514 config/tc-d30v.c:553 config/tc-h8300.c:304 +#: config/tc-h8500.c:297 config/tc-mcore.c:656 config/tc-mn10200.c:935 +#: config/tc-mn10300.c:1303 config/tc-ppc.c:1970 config/tc-sh.c:638 +#: config/tc-tic80.c:291 config/tc-v850.c:2034 config/tc-w65.c:257 +#: config/tc-z8k.c:338 msgid "missing operand" msgstr "" -#: config/tc-a29k.c:415 config/tc-hppa.c:1533 config/tc-i860.c:407 -#: config/tc-i860.c:423 config/tc-sparc.c:1352 config/tc-sparc.c:1358 +#: config/tc-a29k.c:415 config/tc-hppa.c:1547 config/tc-i860.c:407 +#: config/tc-i860.c:423 config/tc-sparc.c:1369 config/tc-sparc.c:1375 #, c-format msgid "Unknown opcode: `%s'" msgstr "" @@ -1039,10 +1050,10 @@ msgstr "" msgid "syntax error" msgstr "" -#: config/tc-alpha.c:1025 config/tc-arm.c:5167 config/tc-h8300.c:1413 -#: config/tc-h8500.c:1222 config/tc-hppa.c:3904 config/tc-i860.c:813 -#: config/tc-m68k.c:4125 config/tc-m88k.c:1106 config/tc-ns32k.c:1589 -#: config/tc-sparc.c:2741 config/tc-z8k.c:1355 +#: config/tc-alpha.c:1025 config/tc-arm.c:5220 config/tc-h8300.c:1409 +#: config/tc-h8500.c:1221 config/tc-hppa.c:3989 config/tc-i860.c:813 +#: config/tc-m68hc11.c:486 config/tc-m68k.c:4125 config/tc-m88k.c:1106 +#: config/tc-ns32k.c:1589 config/tc-sparc.c:2757 config/tc-z8k.c:1352 msgid "Bad call to MD_ATOF()" msgstr "" @@ -1136,10 +1147,10 @@ msgstr "" msgid "operand out of range (%s not between %d and %d)" msgstr "" -#: config/tc-alpha.c:2434 config/tc-arc.c:548 config/tc-d10v.c:596 -#: config/tc-d30v.c:636 config/tc-mn10200.c:990 config/tc-mn10300.c:1368 -#: config/tc-ppc.c:1818 config/tc-ppc.c:1926 config/tc-ppc.c:1938 -#: config/tc-v850.c:1819 config/tc-v850.c:1842 config/tc-v850.c:2055 +#: config/tc-alpha.c:2434 config/tc-arc.c:548 config/tc-d10v.c:603 +#: config/tc-d30v.c:636 config/tc-mn10200.c:990 config/tc-mn10300.c:1375 +#: config/tc-ppc.c:1936 config/tc-ppc.c:2044 config/tc-ppc.c:2056 +#: config/tc-v850.c:1820 config/tc-v850.c:1843 config/tc-v850.c:2056 msgid "too many fixups" msgstr "" @@ -1153,7 +1164,7 @@ msgstr "" msgid "opcode `%s' not supported for target %s" msgstr "" -#: config/tc-alpha.c:2651 config/tc-alpha.c:2719 +#: config/tc-alpha.c:2651 config/tc-alpha.c:2719 config/tc-avr.c:1012 #, c-format msgid "unknown opcode `%s'" msgstr "" @@ -1185,11 +1196,11 @@ msgstr "" msgid "macro requires $at while $at in use" msgstr "" -#: config/tc-alpha.c:3075 expr.c:86 read.c:3160 +#: config/tc-alpha.c:3075 expr.c:86 read.c:3158 msgid "bignum invalid; zero assumed" msgstr "" -#: config/tc-alpha.c:3077 expr.c:88 read.c:3162 read.c:3498 read.c:4396 +#: config/tc-alpha.c:3077 expr.c:88 read.c:3160 read.c:3496 read.c:4394 msgid "floating point number invalid; zero assumed" msgstr "" @@ -1206,14 +1217,14 @@ msgstr "" msgid "bad instruction format for lda !%s!%d" msgstr "" -#: config/tc-alpha.c:4291 config/tc-ppc.c:1345 config/tc-ppc.c:3555 -#: read.c:1387 +#: config/tc-alpha.c:4291 config/tc-ppc.c:1463 config/tc-ppc.c:3681 +#: read.c:1385 #, c-format msgid ".COMMon length (%ld.) <0! Ignored." msgstr "" -#: config/tc-alpha.c:4329 config/tc-alpha.c:4338 config/tc-ppc.c:3592 -#: read.c:1408 +#: config/tc-alpha.c:4329 config/tc-alpha.c:4338 config/tc-ppc.c:3718 +#: read.c:1406 #, c-format msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld." msgstr "" @@ -1303,8 +1314,8 @@ msgstr "" msgid "Bad .fmask directive" msgstr "" -#: config/tc-alpha.c:5169 config/tc-arm.c:1325 read.c:2151 read.c:2731 -#: stabs.c:460 +#: config/tc-alpha.c:5169 config/tc-arm.c:1331 read.c:2149 read.c:2729 +#: stabs.c:459 #, c-format msgid "Expected comma after name \"%s\"" msgstr "" @@ -1335,7 +1346,7 @@ msgstr "" msgid "Alignment too large: %d. assumed" msgstr "" -#: config/tc-alpha.c:5275 config/tc-d30v.c:2182 +#: config/tc-alpha.c:5275 config/tc-d30v.c:2181 msgid "Alignment negative: 0 assumed" msgstr "" @@ -1352,9 +1363,9 @@ msgid "" msgstr "" #: config/tc-arc.c:155 config/tc-arc.c:178 config/tc-arc.c:922 -#: config/tc-hppa.c:1347 config/tc-hppa.c:6734 config/tc-hppa.c:6740 -#: config/tc-hppa.c:6746 config/tc-hppa.c:6752 config/tc-mn10300.c:885 -#: config/tc-mn10300.c:1996 +#: config/tc-hppa.c:1361 config/tc-hppa.c:6752 config/tc-hppa.c:6758 +#: config/tc-hppa.c:6764 config/tc-hppa.c:6770 config/tc-mn10300.c:891 +#: config/tc-mn10300.c:2020 msgid "could not set architecture and machine" msgstr "" @@ -1362,8 +1373,8 @@ msgstr "" msgid "virtual memory exhausted" msgstr "" -#: config/tc-arc.c:254 config/tc-mn10200.c:1354 config/tc-mn10300.c:1907 -#: config/tc-ppc.c:1102 config/tc-v850.c:1618 +#: config/tc-arc.c:254 config/tc-mn10200.c:1354 config/tc-mn10300.c:1931 +#: config/tc-ppc.c:1220 config/tc-v850.c:1619 #, c-format msgid "operand out of range (%s not between %ld and %ld)" msgstr "" @@ -1377,14 +1388,14 @@ msgstr "" msgid "too many suffixes" msgstr "" -#: config/tc-arc.c:533 config/tc-d10v.c:505 config/tc-d30v.c:551 -#: config/tc-mn10200.c:932 config/tc-mn10300.c:1293 config/tc-ppc.c:1850 -#: config/tc-tic80.c:287 config/tc-v850.c:2030 +#: config/tc-arc.c:533 config/tc-d10v.c:512 config/tc-d30v.c:551 +#: config/tc-mn10200.c:932 config/tc-mn10300.c:1300 config/tc-ppc.c:1968 +#: config/tc-tic80.c:287 config/tc-v850.c:2031 msgid "illegal operand" msgstr "" -#: config/tc-arc.c:620 config/tc-mn10200.c:1031 config/tc-mn10300.c:1438 -#: config/tc-ppc.c:1975 config/tc-v850.c:2108 +#: config/tc-arc.c:620 config/tc-mn10200.c:1031 config/tc-mn10300.c:1445 +#: config/tc-ppc.c:2093 config/tc-v850.c:2109 #, c-format msgid "junk at end of line: `%s'" msgstr "" @@ -1401,7 +1412,7 @@ msgstr "" msgid "conditional branch follows set of flags" msgstr "" -#: config/tc-arc.c:749 config/tc-arm.c:6377 +#: config/tc-arc.c:749 config/tc-arm.c:6425 #, c-format msgid "bad instruction `%s'" msgstr "" @@ -1430,7 +1441,7 @@ msgstr "" msgid "bad .cpu op" msgstr "" -#: config/tc-arc.c:951 config/tc-ppc.c:2623 +#: config/tc-arc.c:951 config/tc-ppc.c:2741 msgid "missing rename string" msgstr "" @@ -1438,9 +1449,10 @@ msgstr "" msgid "invalid symbol to rename to" msgstr "" -#: config/tc-arc.c:1010 config/tc-d10v.c:284 config/tc-d30v.c:366 -#: config/tc-mips.c:8770 config/tc-mn10200.c:355 config/tc-pj.c:365 -#: config/tc-ppc.c:4384 config/tc-sh.c:1742 config/tc-v850.c:1276 +#: config/tc-arc.c:1010 config/tc-avr.c:288 config/tc-d10v.c:291 +#: config/tc-d30v.c:366 config/tc-mips.c:8770 config/tc-mn10200.c:355 +#: config/tc-pj.c:365 config/tc-ppc.c:4510 config/tc-sh.c:1824 +#: config/tc-v850.c:1278 msgid "bad call to md_atof" msgstr "" @@ -1453,583 +1465,595 @@ msgstr "" msgid "expression too complex for %%st" msgstr "" -#: config/tc-arc.c:1326 config/tc-arm.c:3142 config/tc-d10v.c:1475 -#: config/tc-d30v.c:1828 config/tc-mips.c:3250 config/tc-mips.c:4182 -#: config/tc-mips.c:4967 config/tc-mips.c:5513 config/tc-ppc.c:4720 -#: config/tc-v850.c:2338 +#: config/tc-arc.c:1326 config/tc-arm.c:3195 config/tc-avr.c:771 +#: config/tc-d10v.c:1532 config/tc-d30v.c:1827 config/tc-mips.c:3250 +#: config/tc-mips.c:4182 config/tc-mips.c:4967 config/tc-mips.c:5513 +#: config/tc-ppc.c:4846 config/tc-v850.c:2341 msgid "expression too complex" msgstr "" -#: config/tc-arc.c:1392 config/tc-ppc.c:4823 config/tc-v850.c:2382 +#: config/tc-arc.c:1392 config/tc-ppc.c:4948 config/tc-v850.c:2385 msgid "unresolved expression that must be resolved" msgstr "" -#: config/tc-arc.c:1457 config/tc-sparc.c:3203 +#: config/tc-arc.c:1457 config/tc-sparc.c:3303 #, c-format msgid "internal error: can't export reloc type %d (`%s')" msgstr "" -#: config/tc-arm.c:1023 +#: config/tc-arm.c:1029 msgid "Literal Pool Overflow" msgstr "" -#: config/tc-arm.c:1165 +#: config/tc-arm.c:1171 msgid "Invalid syntax for .req directive." msgstr "" -#: config/tc-arm.c:1237 config/tc-mips.c:9963 read.c:2040 +#: config/tc-arm.c:1243 config/tc-mips.c:9979 read.c:2038 #, c-format msgid "Alignment too large: %d. assumed." msgstr "" -#: config/tc-arm.c:1240 read.c:2045 +#: config/tc-arm.c:1246 read.c:2043 msgid "Alignment negative. 0 assumed." msgstr "" -#: config/tc-arm.c:1374 config/tc-m32r.c:418 read.c:2790 read.c:4867 +#: config/tc-arm.c:1380 config/tc-m32r.c:418 read.c:2788 read.c:4865 #, c-format msgid "symbol `%s' already defined" msgstr "" -#: config/tc-arm.c:1444 +#: config/tc-arm.c:1450 msgid "selected processor does not support THUMB opcodes" msgstr "" -#: config/tc-arm.c:1456 +#: config/tc-arm.c:1462 msgid "selected processor does not support ARM opcodes" msgstr "" -#: config/tc-arm.c:1465 +#: config/tc-arm.c:1471 #, c-format msgid "invalid instruction size selected (%d)" msgstr "" -#: config/tc-arm.c:1500 +#: config/tc-arm.c:1506 #, c-format msgid "invalid operand to .code directive (%d) (expecting 16 or 32)" msgstr "" -#: config/tc-arm.c:1511 +#: config/tc-arm.c:1517 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:1560 +#: config/tc-arm.c:1566 #, c-format 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:1586 -msgid "<psr(f)> expected" +#. In the few cases where we might be able to accept +#. something else this error can be overridden. +#: config/tc-arm.c:1630 +msgid "flag for {c}psr instruction expected" msgstr "" -#: config/tc-arm.c:1616 +#: config/tc-arm.c:1660 msgid "Illegal co-processor number" msgstr "" -#: config/tc-arm.c:1623 +#: config/tc-arm.c:1667 msgid "Bad or missing co-processor number" msgstr "" -#: config/tc-arm.c:1647 +#: config/tc-arm.c:1691 msgid "bad or missing expression" msgstr "" -#: config/tc-arm.c:1653 +#: config/tc-arm.c:1697 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:1678 +#: config/tc-arm.c:1722 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:1702 +#: config/tc-arm.c:1746 msgid "Floating point register expected" msgstr "" -#: config/tc-arm.c:1719 +#: config/tc-arm.c:1763 msgid "immediate expression expected" msgstr "" -#: config/tc-arm.c:1734 +#: config/tc-arm.c:1778 msgid "co-processor address must be word aligned" msgstr "" -#: config/tc-arm.c:1740 +#: config/tc-arm.c:1784 msgid "offset too large" msgstr "" -#: config/tc-arm.c:1788 +#: config/tc-arm.c:1832 msgid "pc may not be used in post-increment" msgstr "" -#: config/tc-arm.c:1804 config/tc-arm.c:2934 +#: config/tc-arm.c:1848 config/tc-arm.c:2987 msgid "pre-indexed expression expected" msgstr "" -#: config/tc-arm.c:1817 config/tc-arm.c:2946 config/tc-arm.c:3288 +#: config/tc-arm.c:1861 config/tc-arm.c:2999 config/tc-arm.c:3341 msgid "missing ]" msgstr "" -#: config/tc-arm.c:1827 +#: config/tc-arm.c:1871 msgid "pc may not be used with write-back" msgstr "" -#: config/tc-arm.c:1881 -msgid "<psr> expected" +#: config/tc-arm.c:1926 +msgid "comma expected after register name" msgstr "" -#: config/tc-arm.c:1942 config/tc-arm.c:2556 -msgid "Register or shift expression expected" +#: config/tc-arm.c:1944 +msgid "{C|S}PSR expected" msgstr "" -#: config/tc-arm.c:1956 config/tc-arm.c:2271 config/tc-arm.c:2523 -#: config/tc-arm.c:2543 -msgid "Invalid constant" +#: config/tc-arm.c:1971 +msgid "comma missing after psr flags" +msgstr "" + +#: config/tc-arm.c:1987 config/tc-arm.c:1996 +msgid "only a register or immediate value can follow a psr flag" msgstr "" -#: config/tc-arm.c:1967 -msgid "Error: unrecognised syntax for second argument to msr instruction" +#: config/tc-arm.c:2002 +msgid "can only set flag field with immediate value" +msgstr "" + +#: config/tc-arm.c:2019 config/tc-arm.c:2324 config/tc-arm.c:2576 +#: config/tc-arm.c:2596 +msgid "Invalid constant" msgstr "" -#: config/tc-arm.c:2016 +#: config/tc-arm.c:2069 msgid "rdhi, rdlo and rm must all be different" msgstr "" -#: config/tc-arm.c:2072 +#: config/tc-arm.c:2125 msgid "rd and rm should be different in mul" msgstr "" -#: config/tc-arm.c:2128 +#: config/tc-arm.c:2181 msgid "rd and rm should be different in mla" msgstr "" -#: config/tc-arm.c:2255 +#: config/tc-arm.c:2308 msgid "bad_segment" msgstr "" -#: config/tc-arm.c:2301 config/tc-arm.c:2378 +#: config/tc-arm.c:2354 config/tc-arm.c:2431 msgid "Shift expression expected" msgstr "" -#: config/tc-arm.c:2342 +#: config/tc-arm.c:2395 msgid "Invalid immediate shift" msgstr "" -#: config/tc-arm.c:2371 +#: config/tc-arm.c:2424 msgid "shift requires register or #expression" msgstr "" -#: config/tc-arm.c:2372 +#: config/tc-arm.c:2425 msgid "shift requires #expression" msgstr "" -#: config/tc-arm.c:2514 config/tc-arm.c:2975 +#: config/tc-arm.c:2567 config/tc-arm.c:3028 msgid "Constant expression expected" msgstr "" #: config/tc-arm.c:2609 +msgid "Register or shift expression expected" +msgstr "" + +#: config/tc-arm.c:2662 msgid "Invalid floating point immediate expression" msgstr "" -#: config/tc-arm.c:2612 +#: config/tc-arm.c:2665 msgid "Floating point register or immediate expression expected" msgstr "" -#: config/tc-arm.c:2781 +#: config/tc-arm.c:2834 msgid "address offset too large" msgstr "" -#: config/tc-arm.c:2853 +#: config/tc-arm.c:2906 msgid "Processor does not support halfwords or signed bytes" msgstr "" -#: config/tc-arm.c:2874 +#: config/tc-arm.c:2927 msgid "Address expected" msgstr "" -#: config/tc-arm.c:2904 config/tc-arm.c:2918 config/tc-arm.c:2955 +#: config/tc-arm.c:2957 config/tc-arm.c:2971 config/tc-arm.c:3008 #, c-format msgid "%s register same as write-back base" msgstr "" -#: config/tc-arm.c:2905 config/tc-arm.c:2919 config/tc-arm.c:2956 +#: config/tc-arm.c:2958 config/tc-arm.c:2972 config/tc-arm.c:3009 msgid "destination" msgstr "" -#: config/tc-arm.c:2905 config/tc-arm.c:2919 config/tc-arm.c:2956 +#: config/tc-arm.c:2958 config/tc-arm.c:2972 config/tc-arm.c:3009 msgid "source" msgstr "" -#: config/tc-arm.c:2995 +#: config/tc-arm.c:3048 msgid "literal pool insertion failed" msgstr "" -#: config/tc-arm.c:3033 +#: config/tc-arm.c:3086 msgid "Pre-increment instruction with translate" msgstr "" -#: config/tc-arm.c:3074 +#: config/tc-arm.c:3127 msgid "Bad range in register list" msgstr "" -#: config/tc-arm.c:3082 config/tc-arm.c:3091 config/tc-arm.c:3132 +#: config/tc-arm.c:3135 config/tc-arm.c:3144 config/tc-arm.c:3185 #, c-format msgid "Warning: Duplicated register (r%d) in register list" msgstr "" -#: config/tc-arm.c:3094 +#: config/tc-arm.c:3147 msgid "Warning: Register range not in ascending order" msgstr "" -#: config/tc-arm.c:3105 +#: config/tc-arm.c:3158 msgid "Missing `}'" msgstr "" -#: config/tc-arm.c:3121 +#: config/tc-arm.c:3174 msgid "invalid register mask" msgstr "" -#: config/tc-arm.c:3180 +#: config/tc-arm.c:3233 msgid "r15 not allowed as base register" msgstr "" -#: config/tc-arm.c:3248 config/tc-arm.c:3262 +#: config/tc-arm.c:3301 config/tc-arm.c:3315 msgid "r15 not allowed in swap" msgstr "" -#: config/tc-arm.c:3615 config/tc-v850.c:1921 config/tc-v850.c:1942 +#: config/tc-arm.c:3668 config/tc-v850.c:1922 config/tc-v850.c:1943 msgid "constant expression expected" msgstr "" -#: config/tc-arm.c:3621 +#: config/tc-arm.c:3674 msgid "Constant value required for number of registers" msgstr "" -#: config/tc-arm.c:3629 +#: config/tc-arm.c:3682 msgid "number of registers must be in the range [1:4]" msgstr "" -#: config/tc-arm.c:3689 +#: config/tc-arm.c:3742 msgid "R15 not allowed as base register with write-back" msgstr "" -#: config/tc-arm.c:3936 +#: config/tc-arm.c:3989 msgid "lo register required" msgstr "" -#: config/tc-arm.c:3944 +#: config/tc-arm.c:3997 msgid "hi register required" msgstr "" -#: config/tc-arm.c:4013 +#: config/tc-arm.c:4066 msgid "dest and source1 must be the same register" msgstr "" -#: config/tc-arm.c:4020 +#: config/tc-arm.c:4073 msgid "subtract valid only on lo regs" msgstr "" -#: config/tc-arm.c:4044 +#: config/tc-arm.c:4097 msgid "invalid Hi register with immediate" msgstr "" -#: config/tc-arm.c:4071 config/tc-arm.c:4104 config/tc-arm.c:4114 +#: config/tc-arm.c:4124 config/tc-arm.c:4157 config/tc-arm.c:4167 msgid "immediate value out of range" msgstr "" -#: config/tc-arm.c:4082 +#: config/tc-arm.c:4135 msgid "invalid immediate value for stack adjust" msgstr "" -#: config/tc-arm.c:4093 +#: config/tc-arm.c:4146 msgid "invalid immediate for address calculation" msgstr "" -#: config/tc-arm.c:4180 +#: config/tc-arm.c:4233 msgid "source1 and dest must be same register" msgstr "" -#: config/tc-arm.c:4215 +#: config/tc-arm.c:4268 msgid "Invalid immediate for shift" msgstr "" -#: config/tc-arm.c:4294 +#: config/tc-arm.c:4347 msgid "only lo regs allowed with immediate" msgstr "" -#: config/tc-arm.c:4313 +#: config/tc-arm.c:4366 msgid "invalid immediate" msgstr "" -#: config/tc-arm.c:4367 +#: config/tc-arm.c:4420 msgid "expected ']'" msgstr "" -#: config/tc-arm.c:4433 +#: config/tc-arm.c:4486 msgid "byte or halfword not valid for base register" msgstr "" -#: config/tc-arm.c:4438 +#: config/tc-arm.c:4491 msgid "R15 based store not allowed" msgstr "" -#: config/tc-arm.c:4443 +#: config/tc-arm.c:4496 msgid "Invalid base register for register offset" msgstr "" -#: config/tc-arm.c:4461 +#: config/tc-arm.c:4514 msgid "invalid offset" msgstr "" -#: config/tc-arm.c:4472 +#: config/tc-arm.c:4525 msgid "invalid base register in load/store" msgstr "" -#: config/tc-arm.c:4496 +#: config/tc-arm.c:4549 msgid "Invalid offset" msgstr "" -#: config/tc-arm.c:4570 +#: config/tc-arm.c:4623 msgid "dest and source1 one must be the same register" msgstr "" -#: config/tc-arm.c:4578 +#: config/tc-arm.c:4631 msgid "Rs and Rd must be different in MUL" msgstr "" -#: config/tc-arm.c:4722 +#: config/tc-arm.c:4775 msgid "" "Inserted missing '!': load/store multiple always writes back base register" msgstr "" -#: config/tc-arm.c:4738 config/tc-arm.c:4838 +#: config/tc-arm.c:4791 config/tc-arm.c:4891 msgid "Expression too complex" msgstr "" -#: config/tc-arm.c:4744 +#: config/tc-arm.c:4797 msgid "only lo-regs valid in load/store multiple" msgstr "" -#: config/tc-arm.c:4790 +#: config/tc-arm.c:4843 msgid "Syntax: ldrs[b] Rd, [Rb, Ro]" msgstr "" -#: config/tc-arm.c:4854 +#: config/tc-arm.c:4907 msgid "invalid register list to push/pop instruction" msgstr "" -#: config/tc-arm.c:4996 +#: config/tc-arm.c:5049 msgid "Virtual memory exhausted" msgstr "" -#: config/tc-arm.c:5394 +#: config/tc-arm.c:5421 #, c-format msgid "invalid constant (%lx) after fixup" msgstr "" -#: config/tc-arm.c:5428 +#: config/tc-arm.c:5455 #, c-format msgid "Unable to compute ADRL instructions for PC offset of 0x%x" msgstr "" -#: config/tc-arm.c:5456 +#: config/tc-arm.c:5483 #, c-format msgid "bad immediate value for offset (%ld)" msgstr "" -#: config/tc-arm.c:5477 config/tc-arm.c:5499 +#: config/tc-arm.c:5504 config/tc-arm.c:5526 msgid "invalid literal constant: pool needs to be closer" msgstr "" -#: config/tc-arm.c:5479 +#: config/tc-arm.c:5506 #, c-format msgid "bad immediate value for half-word offset (%ld)" msgstr "" -#: config/tc-arm.c:5516 +#: config/tc-arm.c:5543 msgid "shift expression is too large" msgstr "" -#: config/tc-arm.c:5534 config/tc-arm.c:5543 +#: config/tc-arm.c:5561 config/tc-arm.c:5570 msgid "Invalid swi expression" msgstr "" -#: config/tc-arm.c:5553 +#: config/tc-arm.c:5580 msgid "Invalid expression in load/store multiple" msgstr "" -#: config/tc-arm.c:5605 +#: config/tc-arm.c:5632 msgid "gas can't handle same-section branch dest >= 0x04000000" msgstr "" -#: config/tc-arm.c:5614 +#: config/tc-arm.c:5641 msgid "out of range branch" msgstr "" -#: config/tc-arm.c:5631 config/tc-arm.c:5647 config/tc-mips.c:9790 +#: config/tc-arm.c:5674 config/tc-arm.c:5690 config/tc-mips.c:9806 msgid "Branch out of range" msgstr "" -#: config/tc-arm.c:5669 +#: config/tc-arm.c:5713 msgid "Branch with link out of range" msgstr "" -#: config/tc-arm.c:5736 +#: config/tc-arm.c:5780 msgid "Illegal value for co-processor offset" msgstr "" -#: config/tc-arm.c:5759 +#: config/tc-arm.c:5803 #, c-format msgid "Invalid offset, target not word aligned (0x%08X)" msgstr "" -#: config/tc-arm.c:5764 config/tc-arm.c:5773 config/tc-arm.c:5780 -#: config/tc-arm.c:5787 config/tc-arm.c:5794 +#: config/tc-arm.c:5808 config/tc-arm.c:5817 config/tc-arm.c:5824 +#: config/tc-arm.c:5831 config/tc-arm.c:5838 #, c-format msgid "Invalid offset, value too big (0x%08X)" msgstr "" -#: config/tc-arm.c:5831 +#: config/tc-arm.c:5875 msgid "Invalid immediate for stack address calculation" msgstr "" -#: config/tc-arm.c:5840 +#: config/tc-arm.c:5884 #, c-format msgid "Invalid immediate for address calculation (value = 0x%08lX)" msgstr "" -#: config/tc-arm.c:5850 +#: config/tc-arm.c:5894 msgid "Invalid 8bit immediate" msgstr "" -#: config/tc-arm.c:5858 +#: config/tc-arm.c:5902 msgid "Invalid 3bit immediate" msgstr "" -#: config/tc-arm.c:5874 +#: config/tc-arm.c:5918 #, c-format msgid "Invalid immediate: %ld is too large" msgstr "" -#: config/tc-arm.c:5889 +#: config/tc-arm.c:5933 #, c-format msgid "Illegal Thumb shift value: %ld" msgstr "" -#: config/tc-arm.c:5903 +#: config/tc-arm.c:5947 #, c-format msgid "Bad relocation fixup type (%d)" msgstr "" -#: config/tc-arm.c:5973 +#: config/tc-arm.c:6019 msgid "Literal referenced across section boundary (Implicit dump?)" msgstr "" -#: config/tc-arm.c:5986 +#: config/tc-arm.c:6032 #, c-format msgid "Internal_relocation (type %d) not fixed up (IMMEDIATE)" msgstr "" -#: config/tc-arm.c:5992 +#: config/tc-arm.c:6038 msgid "ADRL used for a symbol not defined in the same file" msgstr "" -#: config/tc-arm.c:5998 +#: config/tc-arm.c:6044 #, c-format msgid "Internal_relocation (type %d) not fixed up (OFFSET_IMM)" msgstr "" -#: config/tc-arm.c:6018 config/tc-mcore.c:2110 config/tc-ns32k.c:2283 +#: config/tc-arm.c:6064 config/tc-mcore.c:2110 config/tc-ns32k.c:2283 msgid "<unknown>" msgstr "" -#: config/tc-arm.c:6021 +#: config/tc-arm.c:6067 #, c-format msgid "Can not represent %s relocation in this object file format (%d)" msgstr "" -#: config/tc-arm.c:6042 config/tc-mips.c:11281 config/tc-sh.c:2866 +#: config/tc-arm.c:6088 config/tc-mips.c:11302 config/tc-sh.c:2953 #, c-format msgid "Can not represent %s relocation in this object file format" msgstr "" -#: config/tc-arm.c:6060 +#: config/tc-arm.c:6106 msgid "md_estimate_size_before_relax\n" msgstr "" -#: config/tc-arm.c:6135 +#: config/tc-arm.c:6181 #, c-format msgid "No operator -- statement `%s'\n" msgstr "" -#: config/tc-arm.c:6153 +#: config/tc-arm.c:6199 msgid "selected processor does not support this opcode" msgstr "" -#: config/tc-arm.c:6197 +#: config/tc-arm.c:6245 #, c-format msgid "Opcode `%s' must have suffix from list: <%s>" msgstr "" -#: config/tc-arm.c:6227 +#: config/tc-arm.c:6275 msgid "Warning: Use of the 'nv' conditional is deprecated\n" msgstr "" -#: config/tc-arm.c:6244 +#: config/tc-arm.c:6292 #, c-format msgid "Opcode `%s' is unconditional\n" msgstr "" -#: config/tc-arm.c:6269 +#: config/tc-arm.c:6317 #, c-format msgid "Opcode `%s' must have suffix from <%s>\n" msgstr "" -#: config/tc-arm.c:6355 +#: config/tc-arm.c:6403 #, c-format msgid "register '%s' does not exist\n" msgstr "" -#: config/tc-arm.c:6360 +#: config/tc-arm.c:6408 #, c-format msgid "ignoring redefinition of register alias '%s'" msgstr "" -#: config/tc-arm.c:6366 +#: config/tc-arm.c:6414 #, c-format msgid "" "ignoring redefinition of register alias '%s' to non-existant register '%s'" msgstr "" -#: config/tc-arm.c:6370 +#: config/tc-arm.c:6418 msgid "ignoring incomplete .req pseuso op" msgstr "" -#: config/tc-arm.c:6550 +#: config/tc-arm.c:6598 #, c-format msgid "Unrecognised APCS switch -m%s" msgstr "" -#: config/tc-arm.c:6693 config/tc-arm.c:6706 config/tc-arm.c:6719 -#: config/tc-arm.c:6732 config/tc-arm.c:6738 +#: config/tc-arm.c:6741 config/tc-arm.c:6754 config/tc-arm.c:6767 +#: config/tc-arm.c:6779 config/tc-arm.c:6785 #, c-format msgid "Invalid architecture variant -m%s" msgstr "" -#: config/tc-arm.c:6745 +#: config/tc-arm.c:6792 #, c-format msgid "Invalid processor variant -m%s" msgstr "" -#: config/tc-arm.c:6768 +#: config/tc-arm.c:6815 msgid "" " ARM Specific Assembler Options:\n" " -m[arm][<processor name>] select processor variant\n" @@ -2045,7 +2069,7 @@ msgid "" " -k generate PIC code.\n" msgstr "" -#: config/tc-arm.c:6780 +#: config/tc-arm.c:6827 msgid "" " -mapcs-32, -mapcs-26 specify which ARM Procedure Calling Standard to " "use\n" @@ -2053,120 +2077,255 @@ msgid "" " -mapcs-reentrant the code is position independent/reentrant\n" msgstr "" -#: config/tc-arm.c:6786 +#: config/tc-arm.c:6833 msgid " -moabi support the old ELF ABI\n" msgstr "" -#: config/tc-arm.c:6790 +#: config/tc-arm.c:6837 msgid "" " -EB assemble code for a big endian cpu\n" " -EL assemble code for a little endian cpu\n" msgstr "" -#: config/tc-arm.c:6939 +#: config/tc-arm.c:6987 #, c-format msgid "%s: unexpected function type: %d" msgstr "" -#: config/tc-d10v.c:228 +#: config/tc-avr.c:204 +msgid "" +"AVR options:\n" +" -mmcu=[avr-name] select microcontroller variant\n" +" [avr-name] can be:\n" +" avr1 - AT90S1200\n" +" avr2 - AT90S2xxx, AT90S4xxx, AT90S85xx, ATtiny22\n" +" avr3 - ATmega103 or ATmega603\n" +" avr4 - ATmega161\n" +" or immediate microcontroller name.\n" +msgstr "" + +#: config/tc-avr.c:246 +#, c-format +msgid "unknown MCU: %s\n" +msgstr "" + +#: config/tc-avr.c:250 +#, c-format +msgid "redefinition of mcu type `%s'" +msgstr "" + +#: config/tc-avr.c:352 +msgid "constant value required" +msgstr "" + +#: config/tc-avr.c:355 +#, c-format +msgid "number must be less than %d" +msgstr "" + +#: config/tc-avr.c:406 +msgid "`,' required" +msgstr "" + +#: config/tc-avr.c:427 +msgid "undefined combination of operands" +msgstr "" + +#: config/tc-avr.c:436 +msgid "skipping two-word instruction" +msgstr "" + +#: config/tc-avr.c:501 +msgid "register r16-r23 required" +msgstr "" + +#: config/tc-avr.c:507 +msgid "register number above 15 required" +msgstr "" + +#: config/tc-avr.c:513 +msgid "even register number required" +msgstr "" + +#: config/tc-avr.c:520 +msgid "register r24,r26,r28 or r30 required" +msgstr "" + +#: config/tc-avr.c:526 +msgid "register name or number from 0 to 31 required" +msgstr "" + +#: config/tc-avr.c:544 +msgid "pointer register (X,Y or Z) required" +msgstr "" + +#: config/tc-avr.c:551 +msgid "cannot both predecrement and postincrement" +msgstr "" + +#: config/tc-avr.c:559 +msgid "addressing mode not supported" +msgstr "" + +#: config/tc-avr.c:566 +msgid "can't predecrement" +msgstr "" + +#: config/tc-avr.c:569 +msgid "pointer register Z required" +msgstr "" + +#: config/tc-avr.c:586 +msgid "pointer register (Y or Z) required" +msgstr "" + +#: config/tc-avr.c:695 +#, c-format +msgid "unknown constraint `%c'" +msgstr "" + +#: config/tc-avr.c:800 config/tc-avr.c:814 config/tc-avr.c:919 +#, c-format +msgid "odd address operand: %ld" +msgstr "" + +#: config/tc-avr.c:806 config/tc-avr.c:830 +#, c-format +msgid "operand out of range: %ld" +msgstr "" + +#: config/tc-avr.c:928 config/tc-d10v.c:1601 config/tc-d30v.c:1952 +#, c-format +msgid "line %d: unknown relocation type: 0x%x" +msgstr "" + +#: config/tc-avr.c:942 +msgid "only constant expression allowed" +msgstr "" + +#: config/tc-avr.c:981 config/tc-d10v.c:1469 config/tc-d30v.c:1771 +#: config/tc-mn10200.c:1233 config/tc-mn10300.c:1788 config/tc-ppc.c:5153 +#: config/tc-v850.c:2258 +#, c-format +msgid "reloc %d not supported by object file format" +msgstr "" + +#: config/tc-avr.c:1006 config/tc-d10v.c:1085 config/tc-d10v.c:1099 +#: config/tc-h8300.c:1275 config/tc-h8500.c:1121 config/tc-mcore.c:989 +#: config/tc-pj.c:274 config/tc-sh.c:1437 config/tc-z8k.c:1220 +msgid "can't find opcode " +msgstr "" + +#: config/tc-avr.c:1023 +#, c-format +msgid "illegal opcode %s for mcu %s" +msgstr "" + +#: config/tc-avr.c:1031 +msgid "garbage at end of line" +msgstr "" + +#: config/tc-avr.c:1089 +msgid "illegal expression" +msgstr "" + +#: config/tc-avr.c:1111 config/tc-avr.c:1160 +msgid "`)' required" +msgstr "" + +#: config/tc-avr.c:1185 config/tc-avr.c:1192 +#, c-format +msgid "illegal %srelocation size: %d" +msgstr "" + +#: config/tc-d10v.c:235 msgid "" "D10V options:\n" "-O optimize. Will do some operations in parallel.\n" msgstr "" -#: config/tc-d10v.c:547 config/tc-d10v.c:629 config/tc-d30v.c:652 +#: config/tc-d10v.c:554 config/tc-d10v.c:636 config/tc-d30v.c:652 #, c-format msgid "operand out of range: %d" msgstr "" -#: config/tc-d10v.c:690 +#: config/tc-d10v.c:697 msgid "Instruction must be executed in parallel with another instruction." msgstr "" -#: config/tc-d10v.c:742 +#: config/tc-d10v.c:752 msgid "Instruction must be executed in parallel" msgstr "" -#: config/tc-d10v.c:745 +#: config/tc-d10v.c:755 msgid "Long instructions may not be combined." msgstr "" -#: config/tc-d10v.c:785 +#: config/tc-d10v.c:797 msgid "One of these instructions may not be executed in parallel." msgstr "" -#: config/tc-d10v.c:790 config/tc-d30v.c:860 +#: config/tc-d10v.c:801 config/tc-d30v.c:859 msgid "Two IU instructions may not be executed in parallel" msgstr "" -#: config/tc-d10v.c:792 config/tc-d10v.c:800 config/tc-d10v.c:815 -#: config/tc-d10v.c:828 config/tc-d30v.c:861 config/tc-d30v.c:870 +#: config/tc-d10v.c:803 config/tc-d10v.c:811 config/tc-d10v.c:829 +#: config/tc-d10v.c:847 config/tc-d30v.c:860 config/tc-d30v.c:869 msgid "Swapping instruction order" msgstr "" -#: config/tc-d10v.c:798 config/tc-d30v.c:867 +#: config/tc-d10v.c:809 config/tc-d30v.c:866 msgid "Two MU instructions may not be executed in parallel" msgstr "" -#: config/tc-d10v.c:819 config/tc-d30v.c:886 +#: config/tc-d10v.c:833 config/tc-d30v.c:885 msgid "IU instruction may not be in the left container" msgstr "" -#: config/tc-d10v.c:832 config/tc-d30v.c:899 -msgid "MU instruction may not be in the right container" +#: config/tc-d10v.c:835 config/tc-d10v.c:853 +msgid "" +"Instruction in R container is squashed by flow control instruction in L " +"container." msgstr "" -#: config/tc-d10v.c:836 config/tc-d30v.c:907 -msgid "unknown execution type passed to write_2_short()" +#: config/tc-d10v.c:851 config/tc-d30v.c:898 +msgid "MU instruction may not be in the right container" msgstr "" -#: config/tc-d10v.c:1049 config/tc-d10v.c:1063 config/tc-h8300.c:1279 -#: config/tc-h8500.c:1122 config/tc-mcore.c:989 config/tc-pj.c:274 -#: config/tc-sh.c:1355 config/tc-z8k.c:1223 -msgid "can't find opcode " +#: config/tc-d10v.c:860 config/tc-d30v.c:906 +msgid "unknown execution type passed to write_2_short()" msgstr "" -#: config/tc-d10v.c:1076 config/tc-d10v.c:1094 config/tc-d30v.c:1385 +#: config/tc-d10v.c:1112 config/tc-d10v.c:1130 config/tc-d30v.c:1384 msgid "Unable to mix instructions as specified" msgstr "" -#: config/tc-d10v.c:1142 config/tc-d30v.c:1520 +#: config/tc-d10v.c:1178 config/tc-d30v.c:1519 #, c-format msgid "unknown opcode: %s" msgstr "" -#: config/tc-d10v.c:1223 config/tc-d10v.c:1369 config/tc-tic80.c:537 +#: config/tc-d10v.c:1259 config/tc-d10v.c:1426 config/tc-tic80.c:537 msgid "bad opcode or operands" msgstr "" -#: config/tc-d10v.c:1272 config/tc-m68k.c:4232 +#: config/tc-d10v.c:1329 config/tc-m68k.c:4232 msgid "value out of range" msgstr "" -#: config/tc-d10v.c:1344 +#: config/tc-d10v.c:1401 msgid "illegal operand - register name found where none expected" msgstr "" -#: config/tc-d10v.c:1380 config/tc-tic80.c:548 +#: config/tc-d10v.c:1437 config/tc-tic80.c:548 msgid "Register number must be EVEN" msgstr "" -#: config/tc-d10v.c:1412 config/tc-d30v.c:1772 config/tc-mn10200.c:1233 -#: config/tc-mn10300.c:1764 config/tc-ppc.c:5020 config/tc-v850.c:2255 -#, c-format -msgid "reloc %d not supported by object file format" -msgstr "" - -#: config/tc-d10v.c:1525 +#: config/tc-d10v.c:1582 #, c-format msgid "line %d: rep or repi must include at least 4 instructions" msgstr "" -#: config/tc-d10v.c:1544 config/tc-d30v.c:1953 -#, c-format -msgid "line %d: unknown relocation type: 0x%x" -msgstr "" - #: config/tc-d30v.c:191 #, c-format msgid "Register name %s conflicts with symbol of the same name" @@ -2206,91 +2365,91 @@ msgstr "" msgid "parallel" msgstr "" -#: config/tc-d30v.c:856 +#: config/tc-d30v.c:855 msgid "Instructions may not be executed in parallel" msgstr "" -#: config/tc-d30v.c:869 config/tc-d30v.c:876 config/tc-d30v.c:892 -#: config/tc-d30v.c:901 +#: config/tc-d30v.c:868 config/tc-d30v.c:875 config/tc-d30v.c:891 +#: config/tc-d30v.c:900 #, c-format msgid "Executing %s in IU may not work" msgstr "" -#: config/tc-d30v.c:888 +#: config/tc-d30v.c:887 #, c-format msgid "special left instruction `%s' kills instruction `%s' in right container" msgstr "" -#: config/tc-d30v.c:1267 config/tc-d30v.c:1284 +#: config/tc-d30v.c:1266 config/tc-d30v.c:1283 msgid "Cannot assemble instruction" msgstr "" -#: config/tc-d30v.c:1269 +#: config/tc-d30v.c:1268 msgid "First opcode is long. Unable to mix instructions as specified." msgstr "" -#: config/tc-d30v.c:1337 +#: config/tc-d30v.c:1336 msgid "word of NOPs added between word multiply and load" msgstr "" -#: config/tc-d30v.c:1339 +#: config/tc-d30v.c:1338 msgid "word of NOPs added between word multiply and 16-bit multiply" msgstr "" -#: config/tc-d30v.c:1369 +#: config/tc-d30v.c:1368 msgid "Instruction uses long version, so it cannot be mixed as specified" msgstr "" -#: config/tc-d30v.c:1453 config/tc-d30v.c:1490 +#: config/tc-d30v.c:1452 config/tc-d30v.c:1489 #, c-format msgid "unknown condition code: %s" msgstr "" -#: config/tc-d30v.c:1483 +#: config/tc-d30v.c:1482 #, c-format msgid "cmpu doesn't support condition code %s" msgstr "" -#: config/tc-d30v.c:1531 +#: config/tc-d30v.c:1530 #, c-format msgid "operands for opcode `%s' do not match any valid format" msgstr "" -#: config/tc-d30v.c:1744 +#: config/tc-d30v.c:1743 msgid "Odd numbered register used as target of multi-register instruction" msgstr "" -#: config/tc-d30v.c:1842 +#: config/tc-d30v.c:1841 #, c-format msgid "line %d: unable to place address of symbol '%s' into a byte" msgstr "" -#: config/tc-d30v.c:1845 +#: config/tc-d30v.c:1844 #, c-format msgid "line %d: unable to place value %x into a byte" msgstr "" -#: config/tc-d30v.c:1853 +#: config/tc-d30v.c:1852 #, c-format msgid "line %d: unable to place address of symbol '%s' into a short" msgstr "" -#: config/tc-d30v.c:1856 +#: config/tc-d30v.c:1855 #, c-format msgid "line %d: unable to place value %x into a short" msgstr "" -#: config/tc-d30v.c:1864 +#: config/tc-d30v.c:1863 #, c-format msgid "line %d: unable to place address of symbol '%s' into a quad" msgstr "" -#: config/tc-d30v.c:2034 +#: config/tc-d30v.c:2033 #, c-format msgid "value too large to fit in %d bits" msgstr "" -#: config/tc-d30v.c:2178 +#: config/tc-d30v.c:2177 #, c-format msgid "Alignment too large: %d assumed" msgstr "" @@ -2312,33 +2471,33 @@ msgstr "" msgid "Bad call to md_atof()" msgstr "" -#: config/tc-h8300.c:254 config/tc-h8300.c:262 +#: config/tc-h8300.c:253 config/tc-h8300.c:261 msgid "Reg not valid for H8/300" msgstr "" -#: config/tc-h8300.c:423 config/tc-h8300.c:426 config/tc-h8300.c:429 -#: config/tc-h8300.c:433 +#: config/tc-h8300.c:422 config/tc-h8300.c:425 config/tc-h8300.c:428 +#: config/tc-h8300.c:432 msgid "Invalid register list for ldm/stm\n" msgstr "" -#: config/tc-h8300.c:490 config/tc-h8300.c:553 config/tc-h8300.c:560 +#: config/tc-h8300.c:489 config/tc-h8300.c:552 config/tc-h8300.c:559 msgid "Wrong size pointer register for architecture." msgstr "" -#: config/tc-h8300.c:518 config/tc-h8300.c:527 config/tc-h8300.c:537 +#: config/tc-h8300.c:517 config/tc-h8300.c:526 config/tc-h8300.c:536 msgid "expected @(exp, reg16)" msgstr "" -#: config/tc-h8300.c:617 +#: config/tc-h8300.c:616 msgid "expect :8 or :16 here" msgstr "" -#: config/tc-h8300.c:823 +#: config/tc-h8300.c:822 #, c-format msgid "operand %s0x%lx out of range." msgstr "" -#: config/tc-h8300.c:910 +#: config/tc-h8300.c:914 msgid "Can't work out size of operand.\n" msgstr "" @@ -2355,63 +2514,63 @@ msgstr "" msgid "#4 not valid on H8/300." msgstr "" -#: config/tc-h8300.c:1112 config/tc-h8300.c:1150 +#: config/tc-h8300.c:1112 config/tc-h8300.c:1145 #, c-format msgid "branch operand has odd offset (%lx)\n" msgstr "" -#: config/tc-h8300.c:1191 +#: config/tc-h8300.c:1187 msgid "destination operand must be 16 bit register" msgstr "" -#: config/tc-h8300.c:1201 +#: config/tc-h8300.c:1197 msgid "source operand must be 8 bit register" msgstr "" -#: config/tc-h8300.c:1209 +#: config/tc-h8300.c:1205 msgid "destination operand must be 16bit absolute address" msgstr "" -#: config/tc-h8300.c:1216 +#: config/tc-h8300.c:1212 msgid "destination operand must be 8 bit register" msgstr "" -#: config/tc-h8300.c:1225 +#: config/tc-h8300.c:1221 msgid "source operand must be 16bit absolute address" msgstr "" -#: config/tc-h8300.c:1233 +#: config/tc-h8300.c:1229 msgid "invalid operands" msgstr "" -#: config/tc-h8300.c:1290 config/tc-h8500.c:1129 config/tc-mips.c:7966 -#: config/tc-sh.c:1584 config/tc-w65.c:759 config/tc-z8k.c:1235 +#: config/tc-h8300.c:1286 config/tc-h8500.c:1128 config/tc-mips.c:7966 +#: config/tc-sh.c:1666 config/tc-w65.c:759 config/tc-z8k.c:1232 msgid "unknown opcode" msgstr "" -#: config/tc-h8300.c:1336 +#: config/tc-h8300.c:1332 msgid "mismatch between opcode size and operand size" msgstr "" -#: config/tc-h8300.c:1348 config/tc-h8500.c:1157 config/tc-sh.c:1698 -#: config/tc-w65.c:791 config/tc-z8k.c:1290 +#: config/tc-h8300.c:1344 config/tc-h8500.c:1156 config/tc-sh.c:1780 +#: config/tc-w65.c:791 config/tc-z8k.c:1287 msgid "call to tc_crawl_symbol_chain \n" msgstr "" -#: config/tc-h8300.c:1362 config/tc-h8500.c:1171 config/tc-sh.c:1705 -#: config/tc-w65.c:805 config/tc-z8k.c:1304 +#: config/tc-h8300.c:1358 config/tc-h8500.c:1170 config/tc-sh.c:1787 +#: config/tc-w65.c:805 config/tc-z8k.c:1301 msgid "call to tc_headers_hook \n" msgstr "" -#: config/tc-h8300.c:1451 config/tc-h8500.c:1260 config/tc-z8k.c:1415 +#: config/tc-h8300.c:1447 config/tc-h8500.c:1259 config/tc-z8k.c:1412 msgid "call to tc_aout_fix_to_chars \n" msgstr "" -#: config/tc-h8300.c:1461 config/tc-z8k.c:1425 +#: config/tc-h8300.c:1457 config/tc-z8k.c:1422 msgid "call to md_convert_frag \n" msgstr "" -#: config/tc-h8300.c:1506 config/tc-z8k.c:1500 +#: config/tc-h8300.c:1502 config/tc-z8k.c:1497 msgid "call tomd_estimate_size_before_relax \n" msgstr "" @@ -2443,713 +2602,731 @@ msgstr "" msgid "@Rn needs word register" msgstr "" -#: config/tc-h8500.c:845 config/tc-sh.c:1149 +#: config/tc-h8500.c:845 config/tc-sh.c:1160 #, c-format msgid "unhandled %d\n" msgstr "" -#: config/tc-h8500.c:873 config/tc-sh.c:1173 +#: config/tc-h8500.c:873 config/tc-sh.c:1184 #, c-format msgid "operand must be absolute in range %d..%d" msgstr "" -#: config/tc-h8500.c:963 config/tc-sh.c:1299 +#: config/tc-h8500.c:963 config/tc-sh.c:1381 #, c-format msgid "failed for %d\n" msgstr "" -#: config/tc-h8500.c:1145 config/tc-sh.c:1394 config/tc-sh.c:1632 +#: config/tc-h8500.c:1144 config/tc-sh.c:1476 config/tc-sh.c:1714 #: config/tc-w65.c:779 msgid "invalid operands for opcode" msgstr "" -#: config/tc-hppa.c:1140 +#: config/tc-hppa.c:1154 msgid "Missing .exit\n" msgstr "" -#: config/tc-hppa.c:1143 +#: config/tc-hppa.c:1157 msgid "Missing .procend\n" msgstr "" -#: config/tc-hppa.c:1322 +#: config/tc-hppa.c:1336 msgid "Invalid field selector. Assuming F%%." msgstr "" -#: config/tc-hppa.c:1353 +#: config/tc-hppa.c:1367 msgid "-R option not supported on this target." msgstr "" -#: config/tc-hppa.c:1369 config/tc-sparc.c:746 config/tc-sparc.c:781 +#: config/tc-hppa.c:1383 config/tc-sparc.c:763 config/tc-sparc.c:798 #, c-format msgid "Internal error: can't hash `%s': %s\n" msgstr "" -#: config/tc-hppa.c:1377 config/tc-i860.c:191 +#: config/tc-hppa.c:1391 config/tc-i860.c:191 #, c-format msgid "internal error: losing opcode: `%s' \"%s\"\n" msgstr "" -#: config/tc-hppa.c:1446 config/tc-hppa.c:6873 config/tc-hppa.c:6928 +#: config/tc-hppa.c:1460 config/tc-hppa.c:6891 config/tc-hppa.c:6946 msgid "Missing function name for .PROC (corrupted label chain)" msgstr "" -#: config/tc-hppa.c:1449 config/tc-hppa.c:6931 +#: config/tc-hppa.c:1463 config/tc-hppa.c:6949 msgid "Missing function name for .PROC" msgstr "" -#: config/tc-hppa.c:1570 config/tc-hppa.c:4715 +#: config/tc-hppa.c:1584 config/tc-hppa.c:4784 msgid "could not update architecture and machine" msgstr "" -#: config/tc-hppa.c:1783 +#: config/tc-hppa.c:1797 msgid "Invalid Indexed Load Completer." msgstr "" -#: config/tc-hppa.c:1788 +#: config/tc-hppa.c:1802 msgid "Invalid Indexed Load Completer Syntax." msgstr "" -#: config/tc-hppa.c:1824 +#: config/tc-hppa.c:1838 msgid "Invalid Short Load/Store Completer." msgstr "" -#: config/tc-hppa.c:1883 config/tc-hppa.c:1888 +#: config/tc-hppa.c:1897 config/tc-hppa.c:1902 msgid "Invalid Store Bytes Short Completer" msgstr "" -#: config/tc-hppa.c:2199 config/tc-hppa.c:2205 +#: config/tc-hppa.c:2213 config/tc-hppa.c:2219 msgid "Invalid left/right combination completer" msgstr "" -#: config/tc-hppa.c:2254 config/tc-hppa.c:2261 +#: config/tc-hppa.c:2268 config/tc-hppa.c:2275 msgid "Invalid permutation completer" msgstr "" -#: config/tc-hppa.c:2362 +#: config/tc-hppa.c:2376 #, c-format msgid "Invalid Add Condition: %s" msgstr "" -#: config/tc-hppa.c:2373 config/tc-hppa.c:2383 +#: config/tc-hppa.c:2387 config/tc-hppa.c:2397 #, c-format msgid "Invalid Add and Branch Condition: %c" msgstr "" -#: config/tc-hppa.c:2404 +#: config/tc-hppa.c:2418 msgid "Invalid Compare/Subtract Condition" msgstr "" -#: config/tc-hppa.c:2444 +#: config/tc-hppa.c:2458 #, c-format msgid "Invalid Bit Branch Condition: %c" msgstr "" -#: config/tc-hppa.c:2530 +#: config/tc-hppa.c:2544 #, c-format msgid "Invalid Compare/Subtract Condition: %s" msgstr "" -#: config/tc-hppa.c:2542 +#: config/tc-hppa.c:2556 #, c-format msgid "Invalid Compare/Subtract Condition: %c" msgstr "" -#: config/tc-hppa.c:2557 +#: config/tc-hppa.c:2571 msgid "Invalid Compare and Branch Condition." msgstr "" -#: config/tc-hppa.c:2655 +#: config/tc-hppa.c:2669 msgid "Invalid Logical Instruction Condition." msgstr "" -#: config/tc-hppa.c:2711 +#: config/tc-hppa.c:2725 msgid "Invalid Shift/Extract/Deposit Condition." msgstr "" -#: config/tc-hppa.c:2823 +#: config/tc-hppa.c:2837 msgid "Invalid Unit Instruction Condition." msgstr "" -#: config/tc-hppa.c:3096 config/tc-hppa.c:3129 config/tc-hppa.c:3166 -#: config/tc-hppa.c:3205 +#: config/tc-hppa.c:3185 config/tc-hppa.c:3216 config/tc-hppa.c:3249 +#: config/tc-hppa.c:3281 msgid "Branch to unaligned address" msgstr "" -#: config/tc-hppa.c:3389 +#: config/tc-hppa.c:3463 msgid "Invalid SFU identifier" msgstr "" -#: config/tc-hppa.c:3439 +#: config/tc-hppa.c:3513 msgid "Invalid COPR identifier" msgstr "" -#: config/tc-hppa.c:3568 +#: config/tc-hppa.c:3642 msgid "Invalid Floating Point Operand Format." msgstr "" -#: config/tc-hppa.c:3706 config/tc-hppa.c:3730 config/tc-hppa.c:3753 -#: config/tc-hppa.c:3776 config/tc-hppa.c:3799 +#: config/tc-hppa.c:3780 config/tc-hppa.c:3804 config/tc-hppa.c:3827 +#: config/tc-hppa.c:3850 config/tc-hppa.c:3873 msgid "Invalid register for single precision fmpyadd or fmpysub" msgstr "" -#: config/tc-hppa.c:3848 +#: config/tc-hppa.c:3933 #, c-format msgid "Invalid operands %s" msgstr "" -#: config/tc-hppa.c:4415 +#: config/tc-hppa.c:4484 msgid "Unknown relocation encountered in md_apply_fix." msgstr "" -#: config/tc-hppa.c:4425 +#: config/tc-hppa.c:4494 #, c-format msgid "no hppa_fixup entry for this fixup (fixP = 0x%x, type = 0x%x)\n" msgstr "" -#: config/tc-hppa.c:4567 config/tc-hppa.c:4592 +#: config/tc-hppa.c:4636 config/tc-hppa.c:4661 #, c-format msgid "Undefined register: '%s'." msgstr "" -#: config/tc-hppa.c:4630 +#: config/tc-hppa.c:4699 #, c-format msgid "Non-absolute symbol: '%s'." msgstr "" -#: config/tc-hppa.c:4645 +#: config/tc-hppa.c:4714 #, c-format msgid "Undefined absolute constant: '%s'." msgstr "" -#: config/tc-hppa.c:4754 +#: config/tc-hppa.c:4823 #, c-format msgid "Invalid FP Compare Condition: %s" msgstr "" -#: config/tc-hppa.c:4810 +#: config/tc-hppa.c:4879 #, c-format msgid "Invalid FTEST completer: %s" msgstr "" -#: config/tc-hppa.c:4877 config/tc-hppa.c:4915 +#: config/tc-hppa.c:4946 config/tc-hppa.c:4984 #, c-format msgid "Invalid FP Operand Format: %3s" msgstr "" -#: config/tc-hppa.c:4994 +#: config/tc-hppa.c:5063 msgid "Bad segment in expression." msgstr "" -#: config/tc-hppa.c:5053 +#: config/tc-hppa.c:5122 msgid "Bad segment (should be absolute)." msgstr "" -#: config/tc-hppa.c:5152 +#: config/tc-hppa.c:5165 #, c-format msgid "Invalid argument location: %s\n" msgstr "" -#: config/tc-hppa.c:5183 +#: config/tc-hppa.c:5196 #, c-format msgid "Invalid argument description: %d" msgstr "" -#: config/tc-hppa.c:5206 +#: config/tc-hppa.c:5219 #, c-format msgid "Invalid Nullification: (%c)" msgstr "" -#: config/tc-hppa.c:5950 +#: config/tc-hppa.c:5961 #, c-format msgid "Invalid .CALL argument: %s" msgstr "" -#: config/tc-hppa.c:6082 +#: config/tc-hppa.c:6093 msgid ".callinfo is not within a procedure definition" msgstr "" -#: config/tc-hppa.c:6102 +#: config/tc-hppa.c:6113 #, c-format msgid "FRAME parameter must be a multiple of 8: %d\n" msgstr "" -#: config/tc-hppa.c:6121 +#: config/tc-hppa.c:6132 msgid "Value for ENTRY_GR must be in the range 3..18\n" msgstr "" -#: config/tc-hppa.c:6133 +#: config/tc-hppa.c:6144 msgid "Value for ENTRY_FR must be in the range 12..21\n" msgstr "" -#: config/tc-hppa.c:6143 +#: config/tc-hppa.c:6154 msgid "Value for ENTRY_SR must be 3\n" msgstr "" -#: config/tc-hppa.c:6199 +#: config/tc-hppa.c:6210 #, c-format msgid "Invalid .CALLINFO argument: %s" msgstr "" -#: config/tc-hppa.c:6293 +#: config/tc-hppa.c:6304 msgid "The .ENTER pseudo-op is not supported" msgstr "" -#: config/tc-hppa.c:6309 +#: config/tc-hppa.c:6320 msgid "Misplaced .entry. Ignored." msgstr "" -#: config/tc-hppa.c:6313 +#: config/tc-hppa.c:6324 msgid "Missing .callinfo." msgstr "" -#: config/tc-hppa.c:6361 +#: config/tc-hppa.c:6372 msgid ".REG must use a label" msgstr "" -#: config/tc-hppa.c:6363 +#: config/tc-hppa.c:6374 msgid ".EQU must use a label" msgstr "" -#: config/tc-hppa.c:6416 +#: config/tc-hppa.c:6427 msgid ".EXIT must appear within a procedure" msgstr "" -#: config/tc-hppa.c:6420 +#: config/tc-hppa.c:6431 msgid "Missing .callinfo" msgstr "" -#: config/tc-hppa.c:6424 +#: config/tc-hppa.c:6435 msgid "No .ENTRY for this .EXIT" msgstr "" -#: config/tc-hppa.c:6451 +#: config/tc-hppa.c:6462 #, c-format msgid "Cannot define export symbol: %s\n" msgstr "" -#: config/tc-hppa.c:6504 +#: config/tc-hppa.c:6522 #, c-format msgid "Using ENTRY rather than CODE in export directive for %s" msgstr "" -#: config/tc-hppa.c:6613 +#: config/tc-hppa.c:6631 #, c-format msgid "Undefined .EXPORT/.IMPORT argument (ignored): %s" msgstr "" -#: config/tc-hppa.c:6695 +#: config/tc-hppa.c:6713 msgid "Missing label name on .LABEL" msgstr "" -#: config/tc-hppa.c:6700 +#: config/tc-hppa.c:6718 msgid "extra .LABEL arguments ignored." msgstr "" -#: config/tc-hppa.c:6717 +#: config/tc-hppa.c:6735 msgid "The .LEAVE pseudo-op is not supported" msgstr "" -#: config/tc-hppa.c:6756 +#: config/tc-hppa.c:6774 msgid "Unrecognized .LEVEL argument\n" msgstr "" -#: config/tc-hppa.c:6792 +#: config/tc-hppa.c:6810 #, c-format msgid "Cannot define static symbol: %s\n" msgstr "" -#: config/tc-hppa.c:6827 +#: config/tc-hppa.c:6845 msgid "Nested procedures" msgstr "" -#: config/tc-hppa.c:6837 +#: config/tc-hppa.c:6855 msgid "Cannot allocate unwind descriptor\n" msgstr "" -#: config/tc-hppa.c:6935 +#: config/tc-hppa.c:6953 msgid "misplaced .procend" msgstr "" -#: config/tc-hppa.c:6938 +#: config/tc-hppa.c:6956 msgid "Missing .callinfo for this procedure" msgstr "" -#: config/tc-hppa.c:6941 +#: config/tc-hppa.c:6959 msgid "Missing .EXIT for a .ENTRY" msgstr "" -#: config/tc-hppa.c:6980 +#: config/tc-hppa.c:6998 msgid "Not in a space.\n" msgstr "" -#: config/tc-hppa.c:6983 +#: config/tc-hppa.c:7001 msgid "Not in a subspace.\n" msgstr "" -#: config/tc-hppa.c:7073 +#: config/tc-hppa.c:7091 msgid "Invalid .SPACE argument" msgstr "" -#: config/tc-hppa.c:7121 +#: config/tc-hppa.c:7139 msgid "Can't change spaces within a procedure definition. Ignored" msgstr "" -#: config/tc-hppa.c:7248 +#: config/tc-hppa.c:7266 #, c-format msgid "Undefined space: '%s' Assuming space number = 0." msgstr "" -#: config/tc-hppa.c:7272 +#: config/tc-hppa.c:7290 msgid "Must be in a space before changing or declaring subspaces.\n" msgstr "" -#: config/tc-hppa.c:7276 +#: config/tc-hppa.c:7294 msgid "Can't change subspaces within a procedure definition. Ignored" msgstr "" -#: config/tc-hppa.c:7311 +#: config/tc-hppa.c:7329 msgid "Parameters of an existing subspace can't be modified" msgstr "" -#: config/tc-hppa.c:7362 +#: config/tc-hppa.c:7380 msgid "Alignment must be a power of 2" msgstr "" -#: config/tc-hppa.c:7404 +#: config/tc-hppa.c:7422 msgid "FIRST not supported as a .SUBSPACE argument" msgstr "" -#: config/tc-hppa.c:7406 +#: config/tc-hppa.c:7424 msgid "Invalid .SUBSPACE argument" msgstr "" -#: config/tc-hppa.c:7589 +#: config/tc-hppa.c:7607 #, c-format msgid "Internal error: Unable to find containing space for %s." msgstr "" -#: config/tc-hppa.c:7630 +#: config/tc-hppa.c:7648 #, c-format msgid "Out of memory: could not allocate new space chain entry: %s\n" msgstr "" -#: config/tc-hppa.c:7716 +#: config/tc-hppa.c:7734 #, c-format msgid "Out of memory: could not allocate new subspace chain entry: %s\n" msgstr "" -#: config/tc-hppa.c:8383 +#: config/tc-hppa.c:8401 #, c-format msgid "Symbol '%s' could not be created." msgstr "" -#: config/tc-hppa.c:8387 +#: config/tc-hppa.c:8405 msgid "No memory for symbol name." msgstr "" -#: config/tc-i386.c:509 +#: config/tc-i386.c:510 +#, c-format +msgid "%s shortened to %s" +msgstr "" + +#: config/tc-i386.c:562 msgid "same type of prefix used twice" msgstr "" -#: config/tc-i386.c:552 +#: config/tc-i386.c:605 msgid "bad argument to syntax directive." msgstr "" -#: config/tc-i386.c:636 config/tc-m68k.c:3750 +#: config/tc-i386.c:647 +#, c-format +msgid "no such architecture: `%s'" +msgstr "" + +#: config/tc-i386.c:652 +msgid "missing cpu architecture" +msgstr "" + +#: config/tc-i386.c:722 config/tc-m68k.c:3748 #, c-format msgid "Internal Error: Can't hash %s: %s" msgstr "" -#: config/tc-i386.c:866 +#: config/tc-i386.c:952 msgid "Unknown" msgstr "" -#: config/tc-i386.c:914 config/tc-i386.c:4407 +#: config/tc-i386.c:1000 config/tc-i386.c:4471 #, c-format msgid "can not do %d byte pc-relative relocation" msgstr "" -#: config/tc-i386.c:924 config/tc-i386.c:4421 +#: config/tc-i386.c:1010 config/tc-i386.c:4485 #, c-format msgid "can not do %d byte relocation" msgstr "" -#: config/tc-i386.c:1030 config/tc-i386.c:1113 +#: config/tc-i386.c:1115 config/tc-i386.c:1198 #, c-format -msgid "no such 386 instruction: `%s'" +msgid "no such instruction: `%s'" msgstr "" -#: config/tc-i386.c:1039 +#: config/tc-i386.c:1124 #, c-format msgid "invalid character %s in mnemonic" msgstr "" -#: config/tc-i386.c:1046 +#: config/tc-i386.c:1131 msgid "expecting prefix; got nothing" msgstr "" -#: config/tc-i386.c:1048 +#: config/tc-i386.c:1133 msgid "expecting mnemonic; got nothing" msgstr "" -#: config/tc-i386.c:1066 +#: config/tc-i386.c:1151 #, c-format msgid "redundant %s prefix" msgstr "" -#: config/tc-i386.c:1122 +#: config/tc-i386.c:1208 +#, c-format +msgid "`%s' is not supported on `%s'" +msgstr "" + +#: config/tc-i386.c:1213 +msgid "use .code16 to ensure correct addressing mode" +msgstr "" + +#: config/tc-i386.c:1221 #, c-format msgid "expecting string instruction after `%s'" msgstr "" -#: config/tc-i386.c:1145 +#: config/tc-i386.c:1244 #, c-format msgid "invalid character %s before operand %d" msgstr "" -#: config/tc-i386.c:1159 +#: config/tc-i386.c:1258 #, c-format msgid "unbalanced parenthesis in operand %d." msgstr "" -#: config/tc-i386.c:1162 +#: config/tc-i386.c:1261 #, c-format msgid "unbalanced brackets in operand %d." msgstr "" -#: config/tc-i386.c:1171 +#: config/tc-i386.c:1270 #, c-format msgid "invalid character %s in operand %d" msgstr "" -#: config/tc-i386.c:1198 +#: config/tc-i386.c:1297 #, c-format msgid "spurious operands; (%d operands/instruction max)" msgstr "" -#: config/tc-i386.c:1219 +#: config/tc-i386.c:1318 msgid "expecting operand after ','; got nothing" msgstr "" -#: config/tc-i386.c:1224 +#: config/tc-i386.c:1323 msgid "expecting operand before ','; got nothing" msgstr "" #. we found no match -#: config/tc-i386.c:1464 +#: config/tc-i386.c:1563 #, c-format msgid "suffix or operands invalid for `%s'" msgstr "" -#: config/tc-i386.c:1472 +#: config/tc-i386.c:1574 #, 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:1479 +#. Warn them that a data or address size prefix doesn't +#. affect assembly of the next line of code. +#: config/tc-i386.c:1582 #, c-format msgid "stand-alone `%s' prefix" msgstr "" -#: config/tc-i386.c:1514 config/tc-i386.c:1529 +#: config/tc-i386.c:1618 config/tc-i386.c:1633 msgid "`%s' operand %d must use `%%es' segment" msgstr "" -#: config/tc-i386.c:1596 config/tc-i386.c:1637 config/tc-i386.c:1664 +#: config/tc-i386.c:1701 config/tc-i386.c:1743 config/tc-i386.c:1771 msgid "using `%%%s' instead of `%%%s' due to `%c' suffix" msgstr "" -#: config/tc-i386.c:1609 config/tc-i386.c:1626 config/tc-i386.c:1653 +#: config/tc-i386.c:1714 config/tc-i386.c:1731 config/tc-i386.c:1759 msgid "`%%%s' not allowed with `%s%c'" msgstr "" -#: config/tc-i386.c:1697 config/tc-i386.c:1717 +#: config/tc-i386.c:1804 config/tc-i386.c:1824 msgid "no instruction mnemonic suffix given; can't determine immediate size" msgstr "" -#: config/tc-i386.c:1742 +#: config/tc-i386.c:1849 msgid "" "no instruction mnemonic suffix given and no register operands; can't size " "instruction" msgstr "" #. reversed arguments on faddp, fsubp, etc. -#: config/tc-i386.c:1844 +#: config/tc-i386.c:1951 msgid "translating to `%s %%%s,%%%s'" msgstr "" #. extraneous `l' suffix on fp insn -#: config/tc-i386.c:1851 +#: config/tc-i386.c:1958 msgid "translating to `%s %%%s'" msgstr "" -#: config/tc-i386.c:2066 +#: config/tc-i386.c:2173 msgid "you can't `pop %%cs'" msgstr "" #. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc. -#: config/tc-i386.c:2097 +#: config/tc-i386.c:2204 #, c-format msgid "translating to `%sp'" msgstr "" -#: config/tc-i386.c:2146 config/tc-i386.c:2208 config/tc-i386.c:2250 +#: config/tc-i386.c:2253 config/tc-i386.c:2316 config/tc-i386.c:2358 msgid "skipping prefixes on this instruction" msgstr "" -#: config/tc-i386.c:2265 +#: config/tc-i386.c:2373 msgid "16-bit jump out of range" msgstr "" -#: config/tc-i386.c:2274 +#: config/tc-i386.c:2382 #, c-format msgid "can't handle non absolute segment in `%s'" msgstr "" -#: config/tc-i386.c:2382 config/tc-i386.c:2432 -#, c-format -msgid "%ld shortened to %ld" -msgstr "" - -#: config/tc-i386.c:2502 +#: config/tc-i386.c:2597 msgid "only 1 or 2 immediate operands are allowed" msgstr "" -#: config/tc-i386.c:2534 config/tc-i386.c:2755 +#: config/tc-i386.c:2629 config/tc-i386.c:2850 msgid "GOT relocations not supported in 16 bit mode" msgstr "" -#: config/tc-i386.c:2555 config/tc-i386.c:2776 +#: config/tc-i386.c:2650 config/tc-i386.c:2871 msgid "bad reloc specifier in expression" msgstr "" -#: config/tc-i386.c:2573 config/tc-i386.c:2810 +#: config/tc-i386.c:2668 config/tc-i386.c:2905 #, c-format msgid "ignoring junk `%s' after expression" msgstr "" #. missing or bad expr becomes absolute 0 -#: config/tc-i386.c:2580 +#: config/tc-i386.c:2675 #, c-format msgid "missing or invalid immediate expression `%s' taken as 0" msgstr "" -#: config/tc-i386.c:2607 config/tc-i386.c:2853 +#: config/tc-i386.c:2702 config/tc-i386.c:2948 #, c-format msgid "unimplemented segment %s in operand" msgstr "" -#: config/tc-i386.c:2609 config/tc-i386.c:2855 +#: config/tc-i386.c:2704 config/tc-i386.c:2950 #, c-format msgid "unimplemented segment type %d in operand" msgstr "" -#: config/tc-i386.c:2653 +#: config/tc-i386.c:2748 #, c-format msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'" msgstr "" -#: config/tc-i386.c:2659 +#: config/tc-i386.c:2754 #, c-format msgid "scale factor of %d without an index register" msgstr "" #. missing or bad expr becomes absolute 0 -#: config/tc-i386.c:2821 +#: config/tc-i386.c:2916 #, c-format msgid "missing or invalid displacement expression `%s' taken as 0" msgstr "" -#: config/tc-i386.c:3035 config/tc-i386.c:3041 config/tc-i386.c:3050 +#: config/tc-i386.c:3130 config/tc-i386.c:3136 config/tc-i386.c:3145 #, c-format msgid "bad segment name `%s'" msgstr "" -#: config/tc-i386.c:3108 +#: config/tc-i386.c:3203 #, c-format msgid "`%s' is not a valid base/index expression" msgstr "" -#: config/tc-i386.c:3112 +#: config/tc-i386.c:3207 #, c-format msgid "`%s' is not a valid %s bit base/index expression" msgstr "" -#: config/tc-i386.c:3133 config/tc-i386.c:3487 +#: config/tc-i386.c:3228 config/tc-i386.c:3582 #, c-format msgid "too many memory references for `%s'" msgstr "" -#: config/tc-i386.c:3219 config/tc-i386.c:3354 config/tc-i386.c:3457 -#: config/tc-i386.c:3572 config/tc-i386.c:3608 +#: config/tc-i386.c:3314 config/tc-i386.c:3449 config/tc-i386.c:3552 +#: config/tc-i386.c:3667 config/tc-i386.c:3703 #, c-format msgid "bad register name `%s'" msgstr "" -#: config/tc-i386.c:3433 +#: config/tc-i386.c:3528 #, c-format msgid "bad memory operand `%s'" msgstr "" -#: config/tc-i386.c:3448 +#: config/tc-i386.c:3543 #, c-format msgid "junk `%s' after register" msgstr "" -#: config/tc-i386.c:3465 +#: config/tc-i386.c:3560 msgid "immediate operand illegal with absolute jump" msgstr "" -#: config/tc-i386.c:3565 +#: config/tc-i386.c:3660 #, c-format msgid "expecting `,' or `)' after index register in `%s'" msgstr "" -#: config/tc-i386.c:3587 +#: config/tc-i386.c:3682 #, c-format msgid "expecting `)' after scale factor in `%s'" msgstr "" -#: config/tc-i386.c:3594 +#: config/tc-i386.c:3689 #, c-format msgid "expecting index register or scale factor after `,'; got '%c'" msgstr "" -#: config/tc-i386.c:3601 +#: config/tc-i386.c:3696 #, c-format msgid "expecting `,' or `)' after base register in `%s'" msgstr "" #. it's not a memory operand; argh! -#: config/tc-i386.c:3641 +#: config/tc-i386.c:3736 #, c-format msgid "invalid char %s beginning operand %d `%s'" msgstr "" -#: config/tc-i386.c:4099 +#: config/tc-i386.c:4169 msgid "Bad call to md_atof ()" msgstr "" -#: config/tc-i386.c:4250 -msgid " -m\t\t\t do long jump\n" +#: config/tc-i386.c:4314 +msgid "" +" -Q ignored\n" +" -V print assembler version number\n" +" -k ignored\n" +" -q quieten some warnings\n" +" -s ignored\n" msgstr "" -#: config/tc-i386.c:4253 -msgid "" -" -V\t\t\t print assembler version number\n" -" -k\t\t\t ignored\n" -" -Qy, -Qn\t\t ignored\n" -" -q\t\t\t ignored\n" -" -s\t\t\t ignored\n" +#: config/tc-i386.c:4321 +msgid " -q quieten some warnings\n" msgstr "" -#: config/tc-i386.c:4307 +#: config/tc-i386.c:4371 msgid "GOT already in symbol table" msgstr "" -#: config/tc-i386.c:4456 +#: config/tc-i386.c:4520 #, c-format msgid "cannot represent relocation type %s" msgstr "" @@ -3185,7 +3362,7 @@ msgstr "" msgid "Illegal operands" msgstr "" -#: config/tc-i860.c:749 config/tc-sparc.c:2644 +#: config/tc-i860.c:749 config/tc-sparc.c:2660 msgid "bad segment" msgstr "" @@ -3409,6 +3586,112 @@ msgstr "" msgid "callj to difference of two symbols" msgstr "" +#: config/tc-ia64.c:3959 +msgid "Register name expected" +msgstr "" + +#: config/tc-ia64.c:3964 config/tc-ia64.c:4246 +msgid "Comma expected" +msgstr "" + +#: config/tc-ia64.c:3972 +msgid "Register value annotation ignored" +msgstr "" + +#: config/tc-ia64.c:3995 +msgid "Directive invalid within a bundle" +msgstr "" + +#: config/tc-ia64.c:4061 +msgid "Missing predicate relation type" +msgstr "" + +#: config/tc-ia64.c:4077 +msgid "Unrecognized predicate relation type" +msgstr "" + +#: config/tc-ia64.c:4097 config/tc-ia64.c:4121 +msgid "Predicate register expected" +msgstr "" + +#: config/tc-ia64.c:4109 +msgid "Duplicate predicate register ignored" +msgstr "" + +#: config/tc-ia64.c:4130 +msgid "Bad register range" +msgstr "" + +#: config/tc-ia64.c:4157 +msgid "Predicate source and target required" +msgstr "" + +#: config/tc-ia64.c:4159 config/tc-ia64.c:4171 +msgid "Use of p0 is not valid in this context" +msgstr "" + +#: config/tc-ia64.c:4166 +msgid "At least two PR arguments expected" +msgstr "" + +#: config/tc-ia64.c:4180 +msgid "At least one PR argument expected" +msgstr "" + +#: config/tc-ia64.c:4216 +#, c-format +msgid "Inserting \"%s\" into entry hint table failed: %s" +msgstr "" + +#. FIXME -- need 62-bit relocation type +#: config/tc-ia64.c:4635 +msgid "62-bit relocation not yet implemented" +msgstr "" + +#: config/tc-ia64.c:4697 +msgid "lower 16 bits of mask ignored" +msgstr "" + +#: config/tc-ia64.c:5104 +msgid "Value truncated to 62 bits" +msgstr "" + +#: config/tc-ia64.c:5610 +#, c-format +msgid "Unrecognized option '-x%s'" +msgstr "" + +#: config/tc-ia64.c:5629 +msgid "" +"IA-64 options:\n" +" -Milp32|-Milp64|-Mlp64|-Mp64\tselect data model (default -Mlp64)\n" +" -Mle | -Mbe\t\t select little- or big-endian byte order (default -Mle)\n" +" -x | -xexplicit\t turn on dependency violation checking (default)\n" +" -xauto\t\t automagically remove dependency violations\n" +" -xdebug\t\t debug dependency violation checker\n" +msgstr "" + +#: config/tc-ia64.c:5905 +msgid "Explicit stops are ignored in auto mode" +msgstr "" + +#: config/tc-ia64.c:5951 +msgid "Found '{' after explicit switch to automatic mode" +msgstr "" + +#: config/tc-ia64.c:7454 +#, c-format +msgid "Unrecognized dependency specifier %d\n" +msgstr "" + +#: config/tc-ia64.c:8196 +msgid "Only the first path encountering the conflict is reported" +msgstr "" + +#: config/tc-ia64.c:8199 +msgid "This is the location of the conflicting usage" +msgstr "" + #. Pretend that we do not recognise this option. #: config/tc-m32r.c:223 msgid "Unrecognised option: -hidden" @@ -3540,7 +3823,7 @@ msgid "" "is this intentional ?" msgstr "" -#: config/tc-m32r.c:1235 config/tc-ppc.c:1337 config/tc-ppc.c:3547 read.c:1378 +#: config/tc-m32r.c:1235 config/tc-ppc.c:1455 config/tc-ppc.c:3673 read.c:1376 msgid "Expected comma after symbol-name: rest of line ignored." msgstr "" @@ -3549,13 +3832,13 @@ msgstr "" msgid ".SCOMMon length (%ld.) <0! Ignored." msgstr "" -#: config/tc-m32r.c:1258 config/tc-ppc.c:1359 config/tc-ppc.c:2266 -#: config/tc-ppc.c:3571 +#: config/tc-m32r.c:1258 config/tc-ppc.c:1477 config/tc-ppc.c:2384 +#: config/tc-ppc.c:3697 msgid "ignoring bad alignment" msgstr "" -#: config/tc-m32r.c:1284 config/tc-ppc.c:1370 config/tc-ppc.c:3583 read.c:1398 -#: read.c:2111 +#: config/tc-m32r.c:1284 config/tc-ppc.c:1488 config/tc-ppc.c:3709 read.c:1396 +#: read.c:2109 #, c-format msgid "Ignoring attempt to re-define symbol `%s'." msgstr "" @@ -3569,6 +3852,322 @@ msgstr "" msgid "Unmatched high/shigh reloc" msgstr "" +#: config/tc-m68hc11.c:312 +#, c-format +msgid "" +"Motorola 68HC11/68HC12 options:\n" +" -m68hc11 | -m68hc12 specify the processor [default %s]\n" +" --force-long-branchs always turn relative branchs into absolute ones\n" +" -S,--short-branchs do not turn relative branchs into absolute ones\n" +" when the offset is out of range\n" +" --strict-direct-mode do not turn the direct mode into extended mode\n" +" when the instruction does not support direct mode\n" +" --print-insn-syntax print the syntax of instruction in case of error\n" +" --print-opcodes print the list of instructions with syntax\n" +" --generate-example generate an example of each instruction\n" +" (used for testing)\n" +msgstr "" + +#: config/tc-m68hc11.c:353 +#, c-format +msgid "Default target `%s' is not supported." +msgstr "" + +#. Dump the opcode statistics table. +#: config/tc-m68hc11.c:372 +msgid "Name # Modes Min ops Max ops Modes mask # Used\n" +msgstr "" + +#: config/tc-m68hc11.c:422 +#, c-format +msgid "Option `%s' is not recognized." +msgstr "" + +#: config/tc-m68hc11.c:646 +msgid "#<imm8>" +msgstr "" + +#: config/tc-m68hc11.c:655 +msgid "#<imm16>" +msgstr "" + +#: config/tc-m68hc11.c:664 config/tc-m68hc11.c:673 +msgid "<imm8>,X" +msgstr "" + +#: config/tc-m68hc11.c:691 +msgid "*<abs8>" +msgstr "" + +#: config/tc-m68hc11.c:703 +msgid "#<mask>" +msgstr "" + +#: config/tc-m68hc11.c:713 +#, c-format +msgid "symbol%d" +msgstr "" + +#: config/tc-m68hc11.c:715 +msgid "<abs>" +msgstr "" + +#: config/tc-m68hc11.c:734 +msgid "<label>" +msgstr "" + +#: config/tc-m68hc11.c:751 +#, c-format +msgid "" +"# Example of `%s' instructions\n" +"\t.sect .text\n" +"_start:\n" +msgstr "" + +#: config/tc-m68hc11.c:801 +#, c-format +msgid "Instruction `%s' is not recognized." +msgstr "" + +#: config/tc-m68hc11.c:806 +#, c-format +msgid "Instruction formats for `%s':" +msgstr "" + +#: config/tc-m68hc11.c:944 +#, c-format +msgid "Immediate operand is not allowed for operand %d." +msgstr "" + +#: config/tc-m68hc11.c:970 +msgid "Indirect indexed addressing is not valid for 68HC11." +msgstr "" + +#: config/tc-m68hc11.c:990 +msgid "Spurious `,' or bad indirect register addressing mode." +msgstr "" + +#: config/tc-m68hc11.c:1006 +msgid "Missing second register or offset for indexed-indirect mode." +msgstr "" + +#: config/tc-m68hc11.c:1016 +msgid "Missing second register for indexed-indirect mode." +msgstr "" + +#: config/tc-m68hc11.c:1032 +msgid "Missing `]' to close indexed-indirect mode." +msgstr "" + +#: config/tc-m68hc11.c:1076 +msgid "Illegal operand." +msgstr "" + +#: config/tc-m68hc11.c:1081 +msgid "Missing operand." +msgstr "" + +#: config/tc-m68hc11.c:1104 +msgid "Pre-decrement mode is not valid for 68HC11" +msgstr "" + +#: config/tc-m68hc11.c:1111 +msgid "Pre-increment mode is not valid for 68HC11" +msgstr "" + +#: config/tc-m68hc11.c:1130 +msgid "Wrong register in register indirect mode." +msgstr "" + +#: config/tc-m68hc11.c:1138 +msgid "Missing `]' to close register indirect operand." +msgstr "" + +#: config/tc-m68hc11.c:1155 +msgid "Post-decrement mode is not valid for 68HC11." +msgstr "" + +#: config/tc-m68hc11.c:1163 +msgid "Post-increment mode is not valid for 68HC11." +msgstr "" + +#: config/tc-m68hc11.c:1180 +msgid "Invalid indexed indirect mode." +msgstr "" + +#: config/tc-m68hc11.c:1281 +#, c-format +msgid "Trap id `%ld' is out of range." +msgstr "" + +#: config/tc-m68hc11.c:1285 +msgid "Trap id must be within [0x30..0x39] or [0x40..0xff]." +msgstr "" + +#: config/tc-m68hc11.c:1292 +#, c-format +msgid "Operand out of 8-bit range: `%ld'." +msgstr "" + +#: config/tc-m68hc11.c:1299 +msgid "The trap id must be a constant." +msgstr "" + +#: config/tc-m68hc11.c:1324 +#, c-format +msgid "Operand `%x' not recognized in fixup8." +msgstr "" + +#: config/tc-m68hc11.c:1344 +#, c-format +msgid "Operand out of 16-bit range: `%ld'." +msgstr "" + +#: config/tc-m68hc11.c:1365 +#, c-format +msgid "Operand `%x' not recognized in fixup16." +msgstr "" + +#: config/tc-m68hc11.c:1384 +#, c-format +msgid "Unexpected branch conversion with `%x'" +msgstr "" + +#: config/tc-m68hc11.c:1480 config/tc-m68hc11.c:1609 +#, c-format +msgid "Operand out of range for a relative branch: `%ld'" +msgstr "" + +#: config/tc-m68hc11.c:1577 +msgid "Invalid register for dbcc/tbcc instruction." +msgstr "" + +#: config/tc-m68hc11.c:1668 +#, c-format +msgid "Increment/decrement value is out of range: `%ld'." +msgstr "" + +#: config/tc-m68hc11.c:1679 +msgid "Expecting a register." +msgstr "" + +#: config/tc-m68hc11.c:1694 +msgid "Invalid register for post/pre increment." +msgstr "" + +#: config/tc-m68hc11.c:1724 +msgid "Invalid register." +msgstr "" + +#: config/tc-m68hc11.c:1731 +#, c-format +msgid "Offset out of 16-bit range: %ld." +msgstr "" + +#: config/tc-m68hc11.c:1736 +msgid "Offset out of 5-bit range for movw/movb insn." +msgstr "" + +#: config/tc-m68hc11.c:1789 +msgid "Expecting register D for indexed indirect mode." +msgstr "" + +#: config/tc-m68hc11.c:1791 +msgid "Indexed indirect mode is not allowed for movb/movw." +msgstr "" + +#: config/tc-m68hc11.c:1808 +msgid "Invalid accumulator register." +msgstr "" + +#: config/tc-m68hc11.c:1833 +msgid "Invalid indexed register." +msgstr "" + +#: config/tc-m68hc11.c:1841 +msgid "Addressing mode not implemented yet." +msgstr "" + +#: config/tc-m68hc11.c:1856 +msgid "Invalid source register for this instruction, use 'tfr'." +msgstr "" + +#: config/tc-m68hc11.c:1858 +msgid "Invalid source register." +msgstr "" + +#: config/tc-m68hc11.c:1863 +msgid "Invalid destination register for this instruction, use 'tfr'." +msgstr "" + +#: config/tc-m68hc11.c:1865 +msgid "Invalid destination register." +msgstr "" + +#: config/tc-m68hc11.c:1954 +msgid "Invalid indexed register, expecting register X." +msgstr "" + +#: config/tc-m68hc11.c:1956 +msgid "Invalid indexed register, expecting register Y." +msgstr "" + +#: config/tc-m68hc11.c:2251 +msgid "No instruction or missing opcode." +msgstr "" + +#: config/tc-m68hc11.c:2316 +#, c-format +msgid "Opcode `%s' is not recognized." +msgstr "" + +#: config/tc-m68hc11.c:2338 +#, c-format +msgid "Garbage at end of instruction: `%s'." +msgstr "" + +#: config/tc-m68hc11.c:2361 +#, c-format +msgid "Invalid operand for `%s'" +msgstr "" + +#: config/tc-m68hc11.c:2420 +#, c-format +msgid "Relocation %d is not supported by object file format." +msgstr "" + +#: config/tc-m68hc11.c:2575 +msgid "bra or bsr with undefined symbol." +msgstr "" + +#: config/tc-m68hc11.c:2683 +#, c-format +msgid "Subtype %d is not recognized." +msgstr "" + +#: config/tc-m68hc11.c:2720 +msgid "Expression too complex." +msgstr "" + +#: config/tc-m68hc11.c:2749 +msgid "Value out of 16-bit range." +msgstr "" + +#: config/tc-m68hc11.c:2768 +#, c-format +msgid "Value %ld too large for 8-bit PC-relative branch." +msgstr "" + +#: config/tc-m68hc11.c:2775 +#, c-format +msgid "Auto increment/decrement offset '%ld' is out of range." +msgstr "" + +#: config/tc-m68hc11.c:2786 +#, c-format +msgid "Line %d: unknown relocation type: 0x%x." +msgstr "" + #: config/tc-m68k.c:646 msgid "Unknown PC relative instruction" msgstr "" @@ -3593,7 +4192,7 @@ msgstr "" msgid "Can not do %d byte pic relocation" msgstr "" -#: config/tc-m68k.c:885 config/tc-mips.c:11262 +#: config/tc-m68k.c:885 config/tc-mips.c:11283 #, c-format msgid "Cannot make %s relocation PC relative" msgstr "" @@ -3630,119 +4229,119 @@ msgstr "" msgid "68010 or higher" msgstr "" -#: config/tc-m68k.c:1848 +#: config/tc-m68k.c:1849 msgid "operands mismatch" msgstr "" -#: config/tc-m68k.c:1905 config/tc-m68k.c:1911 config/tc-m68k.c:1917 +#: config/tc-m68k.c:1906 config/tc-m68k.c:1912 config/tc-m68k.c:1918 msgid "operand out of range" msgstr "" -#: config/tc-m68k.c:1974 +#: config/tc-m68k.c:1975 #, c-format msgid "Bignum too big for %c format; truncated" msgstr "" -#: config/tc-m68k.c:2042 +#: config/tc-m68k.c:2043 msgid "displacement too large for this architecture; needs 68020 or higher" msgstr "" -#: config/tc-m68k.c:2152 +#: config/tc-m68k.c:2153 msgid "" "scale factor invalid on this architecture; needs cpu32 or 68020 or higher" msgstr "" -#: config/tc-m68k.c:2157 +#: config/tc-m68k.c:2158 msgid "invalid index size for coldfire" msgstr "" -#: config/tc-m68k.c:2210 +#: config/tc-m68k.c:2211 msgid "Forcing byte displacement" msgstr "" -#: config/tc-m68k.c:2212 +#: config/tc-m68k.c:2213 msgid "byte displacement out of range" msgstr "" -#: config/tc-m68k.c:2259 config/tc-m68k.c:2297 +#: config/tc-m68k.c:2260 config/tc-m68k.c:2298 msgid "invalid operand mode for this architecture; needs 68020 or higher" msgstr "" -#: config/tc-m68k.c:2283 config/tc-m68k.c:2317 +#: config/tc-m68k.c:2284 config/tc-m68k.c:2318 msgid ":b not permitted; defaulting to :w" msgstr "" -#: config/tc-m68k.c:2399 +#: config/tc-m68k.c:2397 msgid "unsupported byte value; use a different suffix" msgstr "" -#: config/tc-m68k.c:2413 +#: config/tc-m68k.c:2411 msgid "unknown/incorrect operand" msgstr "" -#: config/tc-m68k.c:2446 config/tc-m68k.c:2454 config/tc-m68k.c:2461 -#: config/tc-m68k.c:2468 +#: config/tc-m68k.c:2444 config/tc-m68k.c:2452 config/tc-m68k.c:2459 +#: config/tc-m68k.c:2466 msgid "out of range" msgstr "" -#: config/tc-m68k.c:2518 +#: config/tc-m68k.c:2516 msgid "Can't use long branches on 68000/68010/5200" msgstr "" -#: config/tc-m68k.c:2606 +#: config/tc-m68k.c:2604 msgid "Expression out of range, using 0" msgstr "" -#: config/tc-m68k.c:2718 config/tc-m68k.c:2734 +#: config/tc-m68k.c:2716 config/tc-m68k.c:2732 msgid "Floating point register in register list" msgstr "" -#: config/tc-m68k.c:2724 +#: config/tc-m68k.c:2722 msgid "Wrong register in floating-point reglist" msgstr "" -#: config/tc-m68k.c:2740 +#: config/tc-m68k.c:2738 msgid "incorrect register in reglist" msgstr "" -#: config/tc-m68k.c:2746 +#: config/tc-m68k.c:2744 msgid "wrong register in floating-point reglist" msgstr "" -#: config/tc-m68k.c:2822 +#: config/tc-m68k.c:2820 msgid "failed sanity check" msgstr "" #. ERROR -#: config/tc-m68k.c:3187 +#: config/tc-m68k.c:3185 msgid "Extra )" msgstr "" #. ERROR -#: config/tc-m68k.c:3198 +#: config/tc-m68k.c:3196 msgid "Missing )" msgstr "" -#: config/tc-m68k.c:3215 +#: config/tc-m68k.c:3213 msgid "Missing operand" msgstr "" -#: config/tc-m68k.c:3547 +#: config/tc-m68k.c:3545 #, c-format msgid "%s -- statement `%s' ignored" msgstr "" -#: config/tc-m68k.c:3591 +#: config/tc-m68k.c:3589 #, c-format msgid "Don't know how to figure width of %c in md_assemble()" msgstr "" -#: config/tc-m68k.c:3759 config/tc-m68k.c:3795 +#: config/tc-m68k.c:3757 config/tc-m68k.c:3795 #, c-format msgid "Internal Error: Can't find %s in hash table" msgstr "" -#: config/tc-m68k.c:3762 config/tc-m68k.c:3798 +#: config/tc-m68k.c:3760 config/tc-m68k.c:3798 #, c-format msgid "Internal Error: Can't hash %s: %s" msgstr "" @@ -3777,151 +4376,143 @@ msgstr "" msgid "short branch with zero offset: use :w" msgstr "" -#: config/tc-m68k.c:4351 -msgid "Long branch offset not supported." -msgstr "" - -#: config/tc-m68k.c:4412 +#: config/tc-m68k.c:4415 #, c-format msgid "Internal error (long PC-relative operand) for insn 0x%04x at 0x%lx" msgstr "" -#: config/tc-m68k.c:4443 +#: config/tc-m68k.c:4446 msgid "displacement doesn't fit in one byte" msgstr "" -#: config/tc-m68k.c:4556 -msgid "Long branch offset to extern symbol not supported." -msgstr "" - -#: config/tc-m68k.c:4905 config/tc-m68k.c:4916 +#: config/tc-m68k.c:4909 config/tc-m68k.c:4920 msgid "expression out of range: defaulting to 1" msgstr "" -#: config/tc-m68k.c:4948 +#: config/tc-m68k.c:4952 msgid "expression out of range: defaulting to 0" msgstr "" -#: config/tc-m68k.c:4981 config/tc-m68k.c:4993 +#: config/tc-m68k.c:4985 config/tc-m68k.c:4997 #, c-format msgid "Can't deal with expression; defaulting to %ld" msgstr "" -#: config/tc-m68k.c:5007 +#: config/tc-m68k.c:5011 msgid "expression doesn't fit in BYTE" msgstr "" -#: config/tc-m68k.c:5011 +#: config/tc-m68k.c:5015 msgid "expression doesn't fit in WORD" msgstr "" -#: config/tc-m68k.c:5104 +#: config/tc-m68k.c:5108 #, c-format msgid "%s: unrecognized processor name" msgstr "" -#: config/tc-m68k.c:5169 +#: config/tc-m68k.c:5173 msgid "bad coprocessor id" msgstr "" -#: config/tc-m68k.c:5175 +#: config/tc-m68k.c:5179 msgid "unrecognized fopt option" msgstr "" -#: config/tc-m68k.c:5309 +#: config/tc-m68k.c:5313 #, c-format msgid "option `%s' may not be negated" msgstr "" -#: config/tc-m68k.c:5320 +#: config/tc-m68k.c:5324 #, c-format msgid "option `%s' not recognized" msgstr "" -#: config/tc-m68k.c:5353 +#: config/tc-m68k.c:5357 msgid "bad format of OPT NEST=depth" msgstr "" -#: config/tc-m68k.c:5416 +#: config/tc-m68k.c:5420 msgid "missing label" msgstr "" -#: config/tc-m68k.c:5440 config/tc-m68k.c:5469 +#: config/tc-m68k.c:5444 config/tc-m68k.c:5473 msgid "bad register list" msgstr "" -#: config/tc-m68k.c:5442 +#: config/tc-m68k.c:5446 #, c-format msgid "bad register list: %s" msgstr "" -#: config/tc-m68k.c:5540 +#: config/tc-m68k.c:5544 msgid "restore without save" msgstr "" -#: config/tc-m68k.c:5717 config/tc-m68k.c:6066 +#: config/tc-m68k.c:5721 config/tc-m68k.c:6070 msgid "syntax error in structured control directive" msgstr "" -#: config/tc-m68k.c:5768 +#: config/tc-m68k.c:5772 msgid "missing condition code in structured control directive" msgstr "" -#: config/tc-m68k.c:6100 +#: config/tc-m68k.c:6104 msgid "missing then" msgstr "" -#: config/tc-m68k.c:6182 +#: config/tc-m68k.c:6186 msgid "else without matching if" msgstr "" -#: config/tc-m68k.c:6216 +#: config/tc-m68k.c:6220 msgid "endi without matching if" msgstr "" -#: config/tc-m68k.c:6257 +#: config/tc-m68k.c:6261 msgid "break outside of structured loop" msgstr "" -#: config/tc-m68k.c:6296 +#: config/tc-m68k.c:6300 msgid "next outside of structured loop" msgstr "" -#: config/tc-m68k.c:6348 +#: config/tc-m68k.c:6352 msgid "missing =" msgstr "" -#: config/tc-m68k.c:6386 +#: config/tc-m68k.c:6390 msgid "missing to or downto" msgstr "" -#: config/tc-m68k.c:6422 config/tc-m68k.c:6456 config/tc-m68k.c:6666 +#: config/tc-m68k.c:6426 config/tc-m68k.c:6460 config/tc-m68k.c:6670 msgid "missing do" msgstr "" -#: config/tc-m68k.c:6559 +#: config/tc-m68k.c:6563 msgid "endf without for" msgstr "" -#: config/tc-m68k.c:6615 +#: config/tc-m68k.c:6619 msgid "until without repeat" msgstr "" -#: config/tc-m68k.c:6702 +#: config/tc-m68k.c:6706 msgid "endw without while" msgstr "" -#: config/tc-m68k.c:6818 +#: config/tc-m68k.c:6822 #, c-format msgid "unrecognized option `%s'" msgstr "" -#: config/tc-m68k.c:6863 +#: config/tc-m68k.c:6867 #, c-format msgid "unrecognized architecture specification `%s'" msgstr "" -#: config/tc-m68k.c:6933 +#: config/tc-m68k.c:6937 msgid "" "680X0 options:\n" "-l\t\t\tuse 1 word for refs to undefined symbols [default 2]\n" @@ -3934,7 +4525,7 @@ msgid "" "\t\t\t[default yes for 68020, 68030, and cpu32]\n" msgstr "" -#: config/tc-m68k.c:6943 +#: config/tc-m68k.c:6947 msgid "" "-m68851 | -mno-68851\n" "\t\t\ttarget has/lacks memory-management unit coprocessor\n" @@ -3946,7 +4537,7 @@ msgid "" "--bitwise-or\t\tdo not treat `|' as a comment character\n" msgstr "" -#: config/tc-m68k.c:6952 +#: config/tc-m68k.c:6956 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" @@ -3954,12 +4545,12 @@ msgid "" "--disp-size-default-32\tdisplacement with unknown size is 32 bits (default)\n" msgstr "" -#: config/tc-m68k.c:6987 +#: config/tc-m68k.c:6991 #, c-format msgid "Error %s in %s\n" msgstr "" -#: config/tc-m68k.c:6991 +#: config/tc-m68k.c:6995 #, c-format msgid "Opcode(%d.%s): " msgstr "" @@ -4020,7 +4611,7 @@ msgstr "" msgid "Relaxation should never occur" msgstr "" -#: config/tc-m88k.c:1267 config/tc-sparc.c:3363 read.c:1973 +#: config/tc-m88k.c:1267 config/tc-sparc.c:3463 read.c:1971 #, c-format msgid "BSS length (%d.) <0! Ignored." msgstr "" @@ -4243,7 +4834,7 @@ msgstr "" msgid "pc-relative" msgstr "" -#: config/tc-mcore.c:2421 config/tc-pj.c:586 config/tc-sh.c:3005 +#: config/tc-mcore.c:2421 config/tc-pj.c:586 config/tc-sh.c:3100 #, c-format msgid "Cannot represent relocation type %s" msgstr "" @@ -4275,7 +4866,7 @@ msgstr "" msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n" msgstr "" -#: config/tc-mips.c:1816 config/tc-mips.c:11394 +#: config/tc-mips.c:1816 config/tc-mips.c:11415 msgid "extended instruction in delay slot" msgstr "" @@ -4521,45 +5112,45 @@ msgstr "" msgid "operand value out of range for instruction" msgstr "" -#: config/tc-mips.c:9052 +#: config/tc-mips.c:9068 #, c-format msgid "ignoring invalid leading 'v' in -mcpu=%s switch" msgstr "" -#: config/tc-mips.c:9058 +#: config/tc-mips.c:9074 #, c-format msgid "invalid architecture -mcpu=%s" msgstr "" -#: config/tc-mips.c:9108 +#: config/tc-mips.c:9124 msgid "-G may not be used with embedded PIC code" msgstr "" -#: config/tc-mips.c:9120 +#: config/tc-mips.c:9136 msgid "-call_shared is supported only for ELF format" msgstr "" -#: config/tc-mips.c:9126 config/tc-mips.c:10205 config/tc-mips.c:10373 +#: config/tc-mips.c:9142 config/tc-mips.c:10221 config/tc-mips.c:10389 msgid "-G may not be used with SVR4 PIC code" msgstr "" -#: config/tc-mips.c:9135 +#: config/tc-mips.c:9151 msgid "-non_shared is supported only for ELF format" msgstr "" -#: config/tc-mips.c:9151 +#: config/tc-mips.c:9167 msgid "-G is not supported for this configuration" msgstr "" -#: config/tc-mips.c:9156 +#: config/tc-mips.c:9172 msgid "-G may not be used with SVR4 or embedded PIC code" msgstr "" -#: config/tc-mips.c:9180 +#: config/tc-mips.c:9196 msgid "No compiled in support for 64 bit object file format" msgstr "" -#: config/tc-mips.c:9270 +#: config/tc-mips.c:9286 msgid "" "MIPS options:\n" "-membedded-pic\t\tgenerate embedded position independent code\n" @@ -4570,7 +5161,7 @@ msgid "" "\t\t\timplicitly with the gp register [default 8]\n" msgstr "" -#: config/tc-mips.c:9278 +#: config/tc-mips.c:9294 msgid "" "-mips1\t\t\tgenerate MIPS ISA I instructions\n" "-mips2\t\t\tgenerate MIPS ISA II instructions\n" @@ -4579,20 +5170,20 @@ msgid "" "-mcpu=CPU\t\tgenerate code for CPU, where CPU is one of:\n" msgstr "" -#: config/tc-mips.c:9304 +#: config/tc-mips.c:9320 msgid "" "-mCPU\t\t\tequivalent to -mcpu=CPU.\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:9317 +#: config/tc-mips.c:9333 msgid "" "-mips16\t\t\tgenerate mips16 instructions\n" "-no-mips16\t\tdo not generate mips16 instructions\n" msgstr "" -#: config/tc-mips.c:9320 +#: config/tc-mips.c:9336 msgid "" "-O0\t\t\tremove unneeded NOPs, do not swap branches\n" "-O\t\t\tremove unneeded NOPs and swap branches\n" @@ -4600,7 +5191,7 @@ msgid "" "--break, --no-trap\tbreak exception on div by 0 and mult overflow\n" msgstr "" -#: config/tc-mips.c:9326 +#: config/tc-mips.c:9342 msgid "" "-KPIC, -call_shared\tgenerate SVR4 position independent code\n" "-non_shared\t\tdo not generate position independent code\n" @@ -4609,170 +5200,170 @@ msgid "" "-64\t\t\tcreate 64 bit object file\n" msgstr "" -#: config/tc-mips.c:9383 +#: config/tc-mips.c:9399 #, c-format msgid "Unsupported reloc size %d" msgstr "" -#: config/tc-mips.c:9486 +#: config/tc-mips.c:9502 msgid "Unmatched %%hi reloc" msgstr "" -#: config/tc-mips.c:9610 +#: config/tc-mips.c:9626 msgid "Invalid PC relative reloc" msgstr "" -#: config/tc-mips.c:9720 config/tc-sparc.c:2925 config/tc-sparc.c:2932 -#: config/tc-sparc.c:2939 config/tc-sparc.c:2946 config/tc-sparc.c:2953 -#: config/tc-sparc.c:2962 config/tc-sparc.c:2973 config/tc-sparc.c:2999 -#: config/tc-sparc.c:3027 write.c:971 write.c:1035 +#: config/tc-mips.c:9736 config/tc-sparc.c:3025 config/tc-sparc.c:3032 +#: config/tc-sparc.c:3039 config/tc-sparc.c:3046 config/tc-sparc.c:3053 +#: config/tc-sparc.c:3062 config/tc-sparc.c:3073 config/tc-sparc.c:3099 +#: config/tc-sparc.c:3127 write.c:971 write.c:1035 msgid "relocation overflow" msgstr "" -#: config/tc-mips.c:9736 +#: config/tc-mips.c:9752 #, c-format msgid "Branch to odd address (%lx)" msgstr "" -#: config/tc-mips.c:9900 +#: config/tc-mips.c:9916 #, c-format msgid "%08lx UNDEFINED\n" msgstr "" -#: config/tc-mips.c:9966 +#: config/tc-mips.c:9982 msgid "Alignment negative: 0 assumed." msgstr "" -#: config/tc-mips.c:10054 +#: config/tc-mips.c:10070 msgid "No read only data section in this object file format" msgstr "" -#: config/tc-mips.c:10077 +#: config/tc-mips.c:10093 msgid "Global pointers not supported; recompile -G 0" msgstr "" -#: config/tc-mips.c:10163 +#: config/tc-mips.c:10179 #, c-format msgid "%s: no such section" msgstr "" -#: config/tc-mips.c:10200 +#: config/tc-mips.c:10216 #, c-format msgid ".option pic%d not supported" msgstr "" -#: config/tc-mips.c:10211 +#: config/tc-mips.c:10227 #, c-format msgid "Unrecognized option \"%s\"" msgstr "" -#: config/tc-mips.c:10274 +#: config/tc-mips.c:10290 msgid "`noreorder' must be set before `nomacro'" msgstr "" -#: config/tc-mips.c:10309 +#: config/tc-mips.c:10325 msgid "unknown ISA level" msgstr "" -#: config/tc-mips.c:10332 +#: config/tc-mips.c:10348 msgid ".set pop with no .set push" msgstr "" -#: config/tc-mips.c:10356 +#: config/tc-mips.c:10372 #, c-format msgid "Tried to set unrecognized symbol: %s\n" msgstr "" -#: config/tc-mips.c:10406 +#: config/tc-mips.c:10422 msgid ".cpload not in noreorder section" msgstr "" -#: config/tc-mips.c:10488 +#: config/tc-mips.c:10504 msgid "Unsupported use of .gpword" msgstr "" -#: config/tc-mips.c:10625 +#: config/tc-mips.c:10641 msgid "expected `$'" msgstr "" -#: config/tc-mips.c:10633 +#: config/tc-mips.c:10649 msgid "Bad register number" msgstr "" -#: config/tc-mips.c:10649 +#: config/tc-mips.c:10665 msgid "Unrecognized register name" msgstr "" -#: config/tc-mips.c:10848 +#: config/tc-mips.c:10864 msgid "unsupported PC relative reference to different section" msgstr "" -#: config/tc-mips.c:10957 +#: config/tc-mips.c:10973 msgid "unsupported relocation" msgstr "" -#: config/tc-mips.c:11040 +#: config/tc-mips.c:11061 msgid "AT used after \".set noat\" or macro used after \".set nomacro\"" msgstr "" -#: config/tc-mips.c:11103 +#: config/tc-mips.c:11124 msgid "Double check fx_r_type in tc-mips.c:tc_gen_reloc" msgstr "" -#: config/tc-mips.c:11615 +#: config/tc-mips.c:11636 msgid "missing `.end' at end of assembly" msgstr "" -#: config/tc-mips.c:11630 +#: config/tc-mips.c:11651 msgid "Expected simple number." msgstr "" -#: config/tc-mips.c:11656 +#: config/tc-mips.c:11677 #, c-format msgid " *input_line_pointer == '%c' 0x%02x\n" msgstr "" -#: config/tc-mips.c:11658 +#: config/tc-mips.c:11679 msgid "Invalid number" msgstr "" -#: config/tc-mips.c:11713 +#: config/tc-mips.c:11734 msgid ".end not in text section" msgstr "" -#: config/tc-mips.c:11717 +#: config/tc-mips.c:11738 msgid ".end directive without a preceding .ent directive." msgstr "" -#: config/tc-mips.c:11726 +#: config/tc-mips.c:11747 msgid ".end symbol does not match .ent symbol." msgstr "" -#: config/tc-mips.c:11729 +#: config/tc-mips.c:11750 msgid ".end directive missing or unknown symbol" msgstr "" -#: config/tc-mips.c:11804 +#: config/tc-mips.c:11825 msgid ".ent or .aent not in text section." msgstr "" -#: config/tc-mips.c:11807 +#: config/tc-mips.c:11828 msgid "missing `.end'" msgstr "" -#: config/tc-mips.c:11840 ecoff.c:3227 +#: config/tc-mips.c:11861 ecoff.c:3227 msgid ".frame outside of .ent" msgstr "" -#: config/tc-mips.c:11851 ecoff.c:3238 +#: config/tc-mips.c:11872 ecoff.c:3238 msgid "Bad .frame directive" msgstr "" -#: config/tc-mips.c:11881 +#: config/tc-mips.c:11902 msgid ".mask/.fmask outside of .ent" msgstr "" -#: config/tc-mips.c:11888 +#: config/tc-mips.c:11909 msgid "Bad .mask/.fmask directive" msgstr "" @@ -4782,23 +5373,23 @@ msgid "" "none yet\n" msgstr "" -#: config/tc-mn10200.c:788 config/tc-mn10300.c:914 config/tc-ppc.c:1614 -#: config/tc-v850.c:1691 +#: config/tc-mn10200.c:788 config/tc-mn10300.c:920 config/tc-ppc.c:1732 +#: config/tc-v850.c:1692 #, c-format msgid "Unrecognized opcode: `%s'" msgstr "" -#: config/tc-mn10300.c:497 +#: config/tc-mn10300.c:503 msgid "" "MN10300 options:\n" "none yet\n" msgstr "" -#: config/tc-mn10300.c:932 +#: config/tc-mn10300.c:938 msgid "Invalid opcode/operands" msgstr "" -#: config/tc-mn10300.c:1409 +#: config/tc-mn10300.c:1416 msgid "Invalid register specification." msgstr "" @@ -4989,21 +5580,21 @@ msgid "" "-big\t\t\tgenerate big endian code\n" msgstr "" -#: config/tc-pj.c:472 config/tc-sh.c:2577 config/tc-sh.c:2584 -#: config/tc-sh.c:2591 config/tc-sh.c:2598 +#: config/tc-pj.c:472 config/tc-sh.c:2661 config/tc-sh.c:2668 +#: config/tc-sh.c:2675 config/tc-sh.c:2682 msgid "pcrel too far" msgstr "" -#: config/tc-pj.c:541 config/tc-sh.c:2670 +#: config/tc-pj.c:541 config/tc-sh.c:2757 msgid "offset out of range" msgstr "" -#: config/tc-ppc.c:835 +#: config/tc-ppc.c:922 #, c-format msgid "invalid switch -m%s" msgstr "" -#: config/tc-ppc.c:872 +#: config/tc-ppc.c:959 msgid "" "PowerPC options:\n" "-u\t\t\tignored\n" @@ -5020,7 +5611,7 @@ msgid "" "-mno-regnames\t\tDo not allow symbolic names for registers\n" msgstr "" -#: config/tc-ppc.c:887 +#: config/tc-ppc.c:974 msgid "" "-mrelocatable\t\tsupport for GCC's -mrelocatble option\n" "-mrelocatable-lib\tsupport for GCC's -mrelocatble-lib option\n" @@ -5034,305 +5625,305 @@ msgid "" "-Qy, -Qn\t\tignored\n" msgstr "" -#: config/tc-ppc.c:922 +#: config/tc-ppc.c:1009 #, c-format msgid "Unknown default cpu = %s, os = %s" msgstr "" -#: config/tc-ppc.c:947 +#: config/tc-ppc.c:1034 msgid "Neither Power nor PowerPC opcodes were selected." msgstr "" -#: config/tc-ppc.c:995 +#: config/tc-ppc.c:1113 #, c-format msgid "Internal assembler error for instruction %s" msgstr "" -#: config/tc-ppc.c:1014 +#: config/tc-ppc.c:1132 #, c-format msgid "Internal assembler error for macro %s" msgstr "" -#: config/tc-ppc.c:1224 +#: config/tc-ppc.c:1342 msgid "identifier+constant@got means identifier@got+constant" msgstr "" -#: config/tc-ppc.c:1278 +#: config/tc-ppc.c:1396 #, c-format msgid "%s relocations do not fit in %d bytes\n" msgstr "" -#: config/tc-ppc.c:1378 +#: config/tc-ppc.c:1496 #, c-format msgid "Length of .lcomm \"%s\" is already %ld. Not changed to %ld." msgstr "" -#: config/tc-ppc.c:1460 +#: config/tc-ppc.c:1578 msgid "Relocation cannot be done when using -mrelocatable" msgstr "" -#: config/tc-ppc.c:1541 +#: config/tc-ppc.c:1659 #, c-format msgid "syntax error: invalid toc specifier `%s'" msgstr "" -#: config/tc-ppc.c:1555 +#: config/tc-ppc.c:1673 #, c-format msgid "syntax error: expected `]', found `%c'" msgstr "" -#: config/tc-ppc.c:1790 +#: config/tc-ppc.c:1908 msgid "[tocv] symbol is not a toc symbol" msgstr "" -#: config/tc-ppc.c:1801 +#: config/tc-ppc.c:1919 msgid "Unimplemented toc32 expression modifier" msgstr "" -#: config/tc-ppc.c:1806 +#: config/tc-ppc.c:1924 msgid "Unimplemented toc64 expression modifier" msgstr "" -#: config/tc-ppc.c:1810 +#: config/tc-ppc.c:1928 #, c-format msgid "Unexpected return value [%d] from parse_toc_entry!\n" msgstr "" -#: config/tc-ppc.c:1963 +#: config/tc-ppc.c:2081 #, c-format msgid "syntax error; found `%c' but expected `%c'" msgstr "" -#: config/tc-ppc.c:2071 +#: config/tc-ppc.c:2189 msgid "wrong number of operands" msgstr "" -#: config/tc-ppc.c:2127 +#: config/tc-ppc.c:2245 msgid "Bad .section directive: want a,w,x,e in string" msgstr "" -#: config/tc-ppc.c:2241 +#: config/tc-ppc.c:2359 msgid "missing size" msgstr "" -#: config/tc-ppc.c:2250 +#: config/tc-ppc.c:2368 msgid "negative size" msgstr "" -#: config/tc-ppc.c:2291 +#: config/tc-ppc.c:2409 msgid "missing real symbol name" msgstr "" -#: config/tc-ppc.c:2312 +#: config/tc-ppc.c:2430 msgid "attempt to redefine symbol" msgstr "" -#: config/tc-ppc.c:2546 +#: config/tc-ppc.c:2664 msgid "The XCOFF file format does not support arbitrary sections" msgstr "" -#: config/tc-ppc.c:2654 config/tc-ppc.c:3171 read.c:2985 +#: config/tc-ppc.c:2772 config/tc-ppc.c:3297 read.c:2983 msgid "missing value" msgstr "" -#: config/tc-ppc.c:2672 +#: config/tc-ppc.c:2790 msgid "illegal .stabx expression; zero assumed" msgstr "" -#: config/tc-ppc.c:2704 +#: config/tc-ppc.c:2822 msgid "missing class" msgstr "" -#: config/tc-ppc.c:2713 +#: config/tc-ppc.c:2831 msgid "missing type" msgstr "" -#: config/tc-ppc.c:2774 +#: config/tc-ppc.c:2892 msgid "missing symbol name" msgstr "" -#: config/tc-ppc.c:2950 +#: config/tc-ppc.c:3068 msgid "nested .bs blocks" msgstr "" -#: config/tc-ppc.c:2983 +#: config/tc-ppc.c:3101 msgid ".es without preceding .bs" msgstr "" -#: config/tc-ppc.c:3163 +#: config/tc-ppc.c:3289 msgid "non-constant byte count" msgstr "" -#: config/tc-ppc.c:3208 +#: config/tc-ppc.c:3334 msgid ".tc not in .toc section" msgstr "" -#: config/tc-ppc.c:3227 +#: config/tc-ppc.c:3353 msgid ".tc with no label" msgstr "" -#: config/tc-ppc.c:3302 +#: config/tc-ppc.c:3428 msgid "No previous section to return to. Directive ignored." msgstr "" #. Section Contents #. unknown -#: config/tc-ppc.c:3721 +#: config/tc-ppc.c:3847 msgid "Unsupported section attribute -- 'a'" msgstr "" -#: config/tc-ppc.c:3911 +#: config/tc-ppc.c:4037 msgid "bad symbol suffix" msgstr "" -#: config/tc-ppc.c:4004 +#: config/tc-ppc.c:4130 msgid "Unrecognized symbol suffix" msgstr "" -#: config/tc-ppc.c:4086 +#: config/tc-ppc.c:4212 msgid "two .function pseudo-ops with no intervening .ef" msgstr "" -#: config/tc-ppc.c:4099 +#: config/tc-ppc.c:4225 msgid ".ef with no preceding .function" msgstr "" -#: config/tc-ppc.c:4227 +#: config/tc-ppc.c:4353 #, c-format msgid "warning: symbol %s has no csect" msgstr "" -#: config/tc-ppc.c:4528 +#: config/tc-ppc.c:4654 msgid "symbol in .toc does not match any .tc" msgstr "" -#: config/tc-ppc.c:4826 +#: config/tc-ppc.c:4951 msgid "unsupported relocation type" msgstr "" -#: config/tc-ppc.c:4880 +#: config/tc-ppc.c:5013 #, c-format msgid "cannot emit PC relative %s relocation against %s" msgstr "" -#: config/tc-ppc.c:4885 +#: config/tc-ppc.c:5018 #, c-format msgid "cannot emit PC relative %s relocation" msgstr "" -#: config/tc-ppc.c:4947 +#: config/tc-ppc.c:5080 msgid "must branch to an address a multiple of 4" msgstr "" -#: config/tc-ppc.c:4951 +#: config/tc-ppc.c:5084 #, c-format msgid "@local or @plt branch destination is too far away, %ld bytes" msgstr "" -#: config/tc-ppc.c:4975 +#: config/tc-ppc.c:5108 #, c-format msgid "Gas failure, reloc value %d\n" msgstr "" -#: config/tc-sh.c:675 +#: config/tc-sh.c:681 msgid "illegal register after @-" msgstr "" -#: config/tc-sh.c:691 +#: config/tc-sh.c:697 msgid "must be @(r0,...)" msgstr "" -#: config/tc-sh.c:707 +#: config/tc-sh.c:713 msgid "syntax error in @(r0,...)" msgstr "" -#: config/tc-sh.c:739 config/tc-sh.c:744 +#: config/tc-sh.c:745 config/tc-sh.c:750 msgid "syntax error in @(disp,[Rn, gbr, pc])" msgstr "" -#: config/tc-sh.c:749 +#: config/tc-sh.c:755 msgid "expecting )" msgstr "" -#: config/tc-sh.c:758 +#: config/tc-sh.c:764 msgid "illegal register after @" msgstr "" -#: config/tc-sh.c:1262 +#: config/tc-sh.c:1324 #, c-format msgid "Invalid register: 'r%d'" msgstr "" -#: config/tc-sh.c:1398 +#: config/tc-sh.c:1480 msgid "insn can't be combined with parallel processing insn" msgstr "" -#: config/tc-sh.c:1405 config/tc-sh.c:1416 +#: config/tc-sh.c:1487 config/tc-sh.c:1498 msgid "multiple movx specifications" msgstr "" -#: config/tc-sh.c:1410 config/tc-sh.c:1437 +#: config/tc-sh.c:1492 config/tc-sh.c:1519 msgid "multiple movy specifications" msgstr "" -#: config/tc-sh.c:1418 +#: config/tc-sh.c:1500 msgid "invalid movx address register" msgstr "" -#: config/tc-sh.c:1424 config/tc-sh.c:1429 +#: config/tc-sh.c:1506 config/tc-sh.c:1511 msgid "invalid movx dsp register" msgstr "" -#: config/tc-sh.c:1446 config/tc-sh.c:1451 +#: config/tc-sh.c:1528 config/tc-sh.c:1533 msgid "invalid movy dsp register" msgstr "" -#: config/tc-sh.c:1455 +#: config/tc-sh.c:1537 msgid "invalid movy address register" msgstr "" -#: config/tc-sh.c:1461 +#: config/tc-sh.c:1543 msgid "dsp immediate shift value not constant" msgstr "" -#: config/tc-sh.c:1468 config/tc-sh.c:1481 +#: config/tc-sh.c:1550 config/tc-sh.c:1563 msgid "multiple parallel processing specifications" msgstr "" -#: config/tc-sh.c:1474 +#: config/tc-sh.c:1556 msgid "multiple condition specifications" msgstr "" -#: config/tc-sh.c:1490 +#: config/tc-sh.c:1572 msgid "insn cannot be combined with pmuls" msgstr "" -#: config/tc-sh.c:1507 +#: config/tc-sh.c:1589 msgid "bad padd / psub pmuls output operand" msgstr "" -#: config/tc-sh.c:1517 +#: config/tc-sh.c:1599 msgid "condition not followed by conditionalizable insn" msgstr "" -#: config/tc-sh.c:1527 +#: config/tc-sh.c:1609 msgid "unrecognized characters at end of parallel processing insn" msgstr "" -#: config/tc-sh.c:1637 +#: config/tc-sh.c:1719 #, c-format msgid "excess operands: '%s'" msgstr "" -#: config/tc-sh.c:1783 +#: config/tc-sh.c:1865 msgid ".uses pseudo-op seen when not relaxing" msgstr "" -#: config/tc-sh.c:1789 +#: config/tc-sh.c:1871 msgid "bad .uses format" msgstr "" -#: config/tc-sh.c:1850 +#: config/tc-sh.c:1932 msgid "" "SH options:\n" "-little\t\t\tgenerate little endian code\n" @@ -5341,139 +5932,141 @@ msgid "" "-dsp\t\t\tenable sh-dsp insns, and disable sh3e / sh4 insns.\n" msgstr "" -#: config/tc-sh.c:1861 config/tc-w65.c:883 +#: config/tc-sh.c:1943 config/tc-w65.c:883 msgid "call to tc_Nout_fix_to_chars \n" msgstr "" -#: config/tc-sh.c:1947 +#: config/tc-sh.c:2029 msgid ".uses does not refer to a local symbol in the same section" msgstr "" -#: config/tc-sh.c:1966 +#: config/tc-sh.c:2048 msgid "can't find fixup pointed to by .uses" msgstr "" -#: config/tc-sh.c:1989 +#: config/tc-sh.c:2071 msgid ".uses target does not refer to a local symbol in the same section" msgstr "" -#: config/tc-sh.c:2086 +#: config/tc-sh.c:2168 #, c-format msgid "at 0x%lx, displacement overflows 12-bit field" msgstr "" -#: config/tc-sh.c:2089 +#: config/tc-sh.c:2171 #, c-format msgid "at 0x%lx, displacement to defined symbol %s overflows 12-bit field" msgstr "" -#: config/tc-sh.c:2093 +#: config/tc-sh.c:2175 #, c-format msgid "at 0x%lx, displacement to undefined symbol %s overflows 12-bit field" msgstr "" -#: config/tc-sh.c:2209 +#: config/tc-sh.c:2291 #, c-format msgid "at 0x%lx, displacement overflows 8-bit field" msgstr "" -#: config/tc-sh.c:2212 +#: config/tc-sh.c:2294 #, c-format msgid "at 0x%lx, displacement to defined symbol %s overflows 8-bit field " msgstr "" -#: config/tc-sh.c:2216 +#: config/tc-sh.c:2298 #, c-format msgid "at 0x%lx, displacement to undefined symbol %s overflows 8-bit field " msgstr "" -#: config/tc-sh.c:2269 +#: config/tc-sh.c:2351 #, c-format msgid "overflow in branch to %s; converted into longer instruction sequence" msgstr "" -#: config/tc-sh.c:2344 config/tc-sh.c:2372 config/tc-sparc.c:3902 -#: config/tc-sparc.c:3921 +#: config/tc-sh.c:2426 config/tc-sh.c:2454 config/tc-sparc.c:4002 +#: config/tc-sparc.c:4021 msgid "misaligned data" msgstr "" -#: config/tc-sh.c:2662 +#: config/tc-sh.c:2749 msgid "misaligned offset" msgstr "" -#: config/tc-sparc.c:268 +#: config/tc-sparc.c:271 msgid "Invalid default architecture, broken assembler." msgstr "" -#: config/tc-sparc.c:272 config/tc-sparc.c:465 +#: config/tc-sparc.c:275 config/tc-sparc.c:472 msgid "Bad opcode table, broken assembler." msgstr "" -#: config/tc-sparc.c:444 +#: config/tc-sparc.c:451 #, c-format msgid "invalid architecture -xarch=%s" msgstr "" -#: config/tc-sparc.c:459 +#: config/tc-sparc.c:466 #, c-format msgid "invalid architecture -A%s" msgstr "" -#: config/tc-sparc.c:526 +#: config/tc-sparc.c:533 #, c-format msgid "No compiled in support for %d bit object file format" msgstr "" -#: config/tc-sparc.c:563 +#: config/tc-sparc.c:570 msgid "Unrecognized option following -K" msgstr "" -#: config/tc-sparc.c:595 +#: config/tc-sparc.c:610 msgid "SPARC options:\n" msgstr "" -#: config/tc-sparc.c:603 +#: config/tc-sparc.c:618 msgid "" "\n" "-xarch=v8plus | -xarch=v8plusa\n" msgstr "" -#: config/tc-sparc.c:604 +#: config/tc-sparc.c:619 msgid "" "\t\t\tspecify variant of SPARC architecture\n" "-bump\t\t\twarn when assembler switches architectures\n" "-sparc\t\t\tignored\n" "--enforce-aligned-data\tforce .long, etc., to be aligned correctly\n" +"-relax\t\t\trelax jumps and branches (default)\n" +"-no-relax\t\tavoid changing any jumps and branches\n" msgstr "" -#: config/tc-sparc.c:610 +#: config/tc-sparc.c:627 msgid "-k\t\t\tgenerate PIC\n" msgstr "" -#: config/tc-sparc.c:614 +#: config/tc-sparc.c:631 msgid "" "-32\t\t\tcreate 32 bit object file\n" "-64\t\t\tcreate 64 bit object file\n" msgstr "" -#: config/tc-sparc.c:617 +#: config/tc-sparc.c:634 #, c-format msgid "\t\t\t[default is %d]\n" msgstr "" -#: config/tc-sparc.c:619 +#: config/tc-sparc.c:636 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:623 +#: config/tc-sparc.c:640 #, c-format msgid "\t\t\t[default is %s]\n" msgstr "" -#: config/tc-sparc.c:625 +#: config/tc-sparc.c:642 msgid "" "-KPIC\t\t\tgenerate PIC\n" "-V\t\t\tprint assembler version number\n" @@ -5486,7 +6079,7 @@ msgid "" "-s\t\t\tignored\n" msgstr "" -#: config/tc-sparc.c:637 +#: config/tc-sparc.c:654 msgid "" "-EL\t\t\tgenerate code for a little endian machine\n" "-EB\t\t\tgenerate code for a big endian machine\n" @@ -5494,218 +6087,218 @@ msgid "" " instructions and little endian data.\n" msgstr "" -#: config/tc-sparc.c:754 +#: config/tc-sparc.c:771 #, c-format msgid "Internal error: losing opcode: `%s' \"%s\"\n" msgstr "" -#: config/tc-sparc.c:772 +#: config/tc-sparc.c:789 #, c-format msgid "Internal error: can't find opcode `%s' for `%s'\n" msgstr "" -#: config/tc-sparc.c:921 +#: config/tc-sparc.c:938 msgid "Support for 64-bit arithmetic not compiled in." msgstr "" -#: config/tc-sparc.c:967 +#: config/tc-sparc.c:984 msgid "set: number not in 0..4294967295 range" msgstr "" -#: config/tc-sparc.c:974 +#: config/tc-sparc.c:991 msgid "set: number not in -2147483648..4294967295 range" msgstr "" -#: config/tc-sparc.c:1034 +#: config/tc-sparc.c:1051 msgid "setsw: number not in -2147483648..4294967295 range" msgstr "" -#: config/tc-sparc.c:1082 +#: config/tc-sparc.c:1099 msgid "setx: temporary register same as destination register" msgstr "" -#: config/tc-sparc.c:1152 +#: config/tc-sparc.c:1169 msgid "setx: illegal temporary register g0" msgstr "" -#: config/tc-sparc.c:1249 +#: config/tc-sparc.c:1266 msgid "FP branch in delay slot" msgstr "" -#: config/tc-sparc.c:1265 +#: config/tc-sparc.c:1282 msgid "FP branch preceded by FP instruction; NOP inserted" msgstr "" -#: config/tc-sparc.c:1305 +#: config/tc-sparc.c:1322 msgid "failed special case insn sanity check" msgstr "" -#: config/tc-sparc.c:1396 +#: config/tc-sparc.c:1413 msgid ": invalid membar mask name" msgstr "" -#: config/tc-sparc.c:1410 +#: config/tc-sparc.c:1427 msgid ": invalid membar mask expression" msgstr "" -#: config/tc-sparc.c:1415 +#: config/tc-sparc.c:1432 msgid ": invalid membar mask number" msgstr "" -#: config/tc-sparc.c:1433 +#: config/tc-sparc.c:1450 msgid ": invalid prefetch function name" msgstr "" -#: config/tc-sparc.c:1441 +#: config/tc-sparc.c:1458 msgid ": invalid prefetch function expression" msgstr "" -#: config/tc-sparc.c:1446 +#: config/tc-sparc.c:1463 msgid ": invalid prefetch function number" msgstr "" -#: config/tc-sparc.c:1474 config/tc-sparc.c:1486 +#: config/tc-sparc.c:1491 config/tc-sparc.c:1503 msgid ": unrecognizable privileged register" msgstr "" -#: config/tc-sparc.c:1510 config/tc-sparc.c:1527 +#: config/tc-sparc.c:1527 config/tc-sparc.c:1544 msgid ": unrecognizable v9a ancillary state register" msgstr "" -#: config/tc-sparc.c:1515 +#: config/tc-sparc.c:1532 msgid ": rd on write only ancillary state register" msgstr "" -#: config/tc-sparc.c:1551 +#: config/tc-sparc.c:1568 msgid ": asr number must be between 16 and 31" msgstr "" -#: config/tc-sparc.c:1559 +#: config/tc-sparc.c:1576 msgid ": asr number must be between 0 and 31" msgstr "" -#: config/tc-sparc.c:1569 +#: config/tc-sparc.c:1586 msgid ": expecting %asrN" msgstr "" -#: config/tc-sparc.c:1897 +#: config/tc-sparc.c:1914 msgid "detected global register use not covered by .register pseudo-op" msgstr "" -#: config/tc-sparc.c:1969 +#: config/tc-sparc.c:1985 msgid ": There are only 64 f registers; [0-63]" msgstr "" -#: config/tc-sparc.c:1971 config/tc-sparc.c:1983 +#: config/tc-sparc.c:1987 config/tc-sparc.c:1999 msgid ": There are only 32 f registers; [0-31]" msgstr "" -#: config/tc-sparc.c:2102 config/tc-sparc.c:2138 +#: config/tc-sparc.c:2118 config/tc-sparc.c:2154 msgid "Illegal operands: %%%s requires arguments in ()" msgstr "" -#: config/tc-sparc.c:2150 +#: config/tc-sparc.c:2166 msgid "" "Illegal operands: Can't do arithmetics other than + and - involving %%%s()" msgstr "" -#: config/tc-sparc.c:2259 +#: config/tc-sparc.c:2275 msgid "Illegal operands: Can't add non-constant expression to %%%s()" msgstr "" -#: config/tc-sparc.c:2269 +#: config/tc-sparc.c:2285 msgid "" "Illegal operands: Can't do arithmetics involving %%%s() of a relocatable " "symbol" msgstr "" -#: config/tc-sparc.c:2287 +#: config/tc-sparc.c:2303 msgid ": PC-relative operand can't be a constant" msgstr "" -#: config/tc-sparc.c:2320 +#: config/tc-sparc.c:2336 msgid ": invalid ASI name" msgstr "" -#: config/tc-sparc.c:2328 +#: config/tc-sparc.c:2344 msgid ": invalid ASI expression" msgstr "" -#: config/tc-sparc.c:2333 +#: config/tc-sparc.c:2349 msgid ": invalid ASI number" msgstr "" -#: config/tc-sparc.c:2430 +#: config/tc-sparc.c:2446 msgid "OPF immediate operand out of range (0-0x1ff)" msgstr "" -#: config/tc-sparc.c:2435 +#: config/tc-sparc.c:2451 msgid "non-immediate OPF operand, ignored" msgstr "" -#: config/tc-sparc.c:2454 +#: config/tc-sparc.c:2470 msgid ": invalid cpreg name" msgstr "" -#: config/tc-sparc.c:2483 +#: config/tc-sparc.c:2499 #, c-format msgid "Illegal operands%s" msgstr "" -#: config/tc-sparc.c:2512 +#: config/tc-sparc.c:2528 #, c-format msgid "architecture bumped from \"%s\" to \"%s\" on \"%s\"" msgstr "" -#: config/tc-sparc.c:2548 +#: config/tc-sparc.c:2564 #, c-format msgid "Architecture mismatch on \"%s\"." msgstr "" -#: config/tc-sparc.c:2549 +#: config/tc-sparc.c:2565 #, c-format msgid " (Requires %s; requested architecture is %s.)" msgstr "" -#: config/tc-sparc.c:3073 +#: config/tc-sparc.c:3173 #, c-format msgid "bad or unhandled relocation type: 0x%02x" msgstr "" -#: config/tc-sparc.c:3375 +#: config/tc-sparc.c:3475 msgid "bad .reserve segment -- expected BSS segment" msgstr "" -#: config/tc-sparc.c:3392 +#: config/tc-sparc.c:3492 msgid "missing alignment" msgstr "" -#: config/tc-sparc.c:3403 config/tc-sparc.c:3548 +#: config/tc-sparc.c:3503 config/tc-sparc.c:3648 #, c-format msgid "alignment too large; assuming %d" msgstr "" -#: config/tc-sparc.c:3409 config/tc-sparc.c:3554 +#: config/tc-sparc.c:3509 config/tc-sparc.c:3654 msgid "negative alignment" msgstr "" -#: config/tc-sparc.c:3419 config/tc-sparc.c:3577 +#: config/tc-sparc.c:3519 config/tc-sparc.c:3677 msgid "alignment not a power of 2" msgstr "" -#: config/tc-sparc.c:3534 +#: config/tc-sparc.c:3634 msgid "Expected comma after common length" msgstr "" -#: config/tc-sparc.c:3769 config/tc-sparc.c:3779 +#: config/tc-sparc.c:3869 config/tc-sparc.c:3879 msgid "register syntax is .register %%g[2367],{#scratch|symbolname|#ignore}" msgstr "" -#: config/tc-sparc.c:3797 +#: config/tc-sparc.c:3897 msgid "redefinition of global register" msgstr "" -#: config/tc-sparc.c:3808 +#: config/tc-sparc.c:3908 #, c-format msgid "Register symbol %s already defined." msgstr "" @@ -6000,153 +6593,153 @@ msgstr "" msgid ".COMMon length (%d.) < 0! Ignored." msgstr "" -#: config/tc-v850.c:1000 +#: config/tc-v850.c:1002 #, c-format msgid "unknown operand shift: %x\n" msgstr "" -#: config/tc-v850.c:1001 +#: config/tc-v850.c:1003 msgid "internal failure in parse_register_list" msgstr "" -#: config/tc-v850.c:1019 +#: config/tc-v850.c:1020 msgid "constant expression or register list expected" msgstr "" -#: config/tc-v850.c:1024 config/tc-v850.c:1037 config/tc-v850.c:1056 +#: config/tc-v850.c:1025 config/tc-v850.c:1038 config/tc-v850.c:1057 msgid "high bits set in register list expression" msgstr "" -#: config/tc-v850.c:1096 config/tc-v850.c:1160 +#: config/tc-v850.c:1097 config/tc-v850.c:1161 msgid "illegal register included in list" msgstr "" -#: config/tc-v850.c:1103 +#: config/tc-v850.c:1104 msgid "system registers cannot be included in list" msgstr "" -#: config/tc-v850.c:1108 +#: config/tc-v850.c:1109 msgid "PSW cannot be included in list" msgstr "" -#: config/tc-v850.c:1115 +#: config/tc-v850.c:1116 msgid "High value system registers cannot be included in list" msgstr "" -#: config/tc-v850.c:1139 +#: config/tc-v850.c:1140 msgid "second register should follow dash in register list" msgstr "" -#: config/tc-v850.c:1187 +#: config/tc-v850.c:1188 msgid " V850 options:\n" msgstr "" -#: config/tc-v850.c:1188 +#: config/tc-v850.c:1189 msgid " -mwarn-signed-overflow Warn if signed immediate values overflow\n" msgstr "" -#: config/tc-v850.c:1189 +#: config/tc-v850.c:1190 msgid "" " -mwarn-unsigned-overflow Warn if unsigned immediate values overflow\n" msgstr "" -#: config/tc-v850.c:1190 +#: config/tc-v850.c:1191 msgid " -mv850 The code is targeted at the v850\n" msgstr "" -#: config/tc-v850.c:1191 +#: config/tc-v850.c:1192 msgid " -mv850e The code is targeted at the v850e\n" msgstr "" -#: config/tc-v850.c:1192 +#: config/tc-v850.c:1193 msgid " -mv850ea The code is targeted at the v850ea\n" msgstr "" -#: config/tc-v850.c:1193 +#: config/tc-v850.c:1194 msgid "" " -mv850any The code is generic, despite any processor " "specific instructions\n" msgstr "" -#: config/tc-v850.c:1204 config/tc-v850.c:1239 +#: config/tc-v850.c:1206 config/tc-v850.c:1241 #, c-format msgid "unknown command line option: -%c%s\n" msgstr "" -#: config/tc-v850.c:1393 +#: config/tc-v850.c:1395 #, c-format msgid "Unable to determine default target processor from string: %s" msgstr "" -#: config/tc-v850.c:1442 +#: config/tc-v850.c:1444 msgid "ctoff() relocation used on an instruction which does not support it" msgstr "" -#: config/tc-v850.c:1459 +#: config/tc-v850.c:1461 msgid "sdaoff() relocation used on an instruction which does not support it" msgstr "" -#: config/tc-v850.c:1476 +#: config/tc-v850.c:1478 msgid "zdaoff() relocation used on an instruction which does not support it" msgstr "" -#: config/tc-v850.c:1494 +#: config/tc-v850.c:1496 msgid "tdaoff() relocation used on an instruction which does not support it" msgstr "" -#: config/tc-v850.c:1712 +#: config/tc-v850.c:1713 msgid "Target processor does not support this instruction." msgstr "" -#: config/tc-v850.c:1802 config/tc-v850.c:1832 config/tc-v850.c:2018 +#: config/tc-v850.c:1803 config/tc-v850.c:1833 config/tc-v850.c:2019 msgid "immediate operand is too large" msgstr "" -#: config/tc-v850.c:1814 +#: config/tc-v850.c:1815 msgid "AAARG -> unhandled constant reloc" msgstr "" -#: config/tc-v850.c:1858 +#: config/tc-v850.c:1859 msgid "invalid register name" msgstr "" -#: config/tc-v850.c:1863 +#: config/tc-v850.c:1864 msgid "register r0 cannot be used here" msgstr "" -#: config/tc-v850.c:1875 +#: config/tc-v850.c:1876 msgid "invalid system register name" msgstr "" -#: config/tc-v850.c:1888 +#: config/tc-v850.c:1889 msgid "expected EP register" msgstr "" -#: config/tc-v850.c:1904 +#: config/tc-v850.c:1905 msgid "invalid condition code name" msgstr "" -#: config/tc-v850.c:1925 config/tc-v850.c:1929 +#: config/tc-v850.c:1926 config/tc-v850.c:1930 msgid "constant too big to fit into instruction" msgstr "" -#: config/tc-v850.c:1981 +#: config/tc-v850.c:1982 msgid "syntax error: value is missing before the register name" msgstr "" -#: config/tc-v850.c:1983 +#: config/tc-v850.c:1984 msgid "syntax error: register not expected" msgstr "" -#: config/tc-v850.c:1997 +#: config/tc-v850.c:1998 msgid "syntax error: system register not expected" msgstr "" -#: config/tc-v850.c:2002 +#: config/tc-v850.c:2003 msgid "syntax error: condition code not expected" msgstr "" -#: config/tc-v850.c:2038 +#: config/tc-v850.c:2039 msgid "invalid operand" msgstr "" @@ -6353,84 +6946,84 @@ msgstr "" msgid "syntax error after <exp" msgstr "" -#: config/tc-z8k.c:290 +#: config/tc-z8k.c:287 #, c-format msgid "register rr%d, out of range." msgstr "" -#: config/tc-z8k.c:298 +#: config/tc-z8k.c:295 #, c-format msgid "register rh%d, out of range." msgstr "" -#: config/tc-z8k.c:306 +#: config/tc-z8k.c:303 #, c-format msgid "register rl%d, out of range." msgstr "" -#: config/tc-z8k.c:315 +#: config/tc-z8k.c:312 #, c-format msgid "register rq%d, out of range." msgstr "" -#: config/tc-z8k.c:323 +#: config/tc-z8k.c:320 #, c-format msgid "register r%d, out of range." msgstr "" -#: config/tc-z8k.c:374 +#: config/tc-z8k.c:371 #, c-format msgid "expected %c" msgstr "" -#: config/tc-z8k.c:390 +#: config/tc-z8k.c:387 #, c-format msgid "register is wrong size for a word %s" msgstr "" -#: config/tc-z8k.c:405 +#: config/tc-z8k.c:402 #, c-format msgid "register is wrong size for address %s" msgstr "" -#: config/tc-z8k.c:680 +#: config/tc-z8k.c:677 msgid "Missing ) in ra(rb)" msgstr "" -#: config/tc-z8k.c:947 +#: config/tc-z8k.c:944 #, c-format msgid "operand %s0x%x out of range." msgstr "" -#: config/tc-z8k.c:1086 +#: config/tc-z8k.c:1083 msgid "immediate must be 1 or 2" msgstr "" -#: config/tc-z8k.c:1091 +#: config/tc-z8k.c:1088 msgid "immediate 1 or 2 expected" msgstr "" -#: config/tc-z8k.c:1119 +#: config/tc-z8k.c:1116 msgid "can't use R0 here" msgstr "" -#: config/tc-z8k.c:1278 +#: config/tc-z8k.c:1275 msgid "Can't find opcode to match operands" msgstr "" -#: config/tc-z8k.c:1390 +#: config/tc-z8k.c:1387 #, c-format msgid "invalid architecture -z%s" msgstr "" -#: config/tc-z8k.c:1406 +#: config/tc-z8k.c:1403 msgid "" "Z8K options:\n" "-z8001\t\t\tgenerate segmented code\n" "-z8002\t\t\tgenerate unsegmented code\n" msgstr "" -#: config/tc-z8k.c:1543 +#: config/tc-z8k.c:1540 #, c-format msgid "Can't subtract symbols in different sections %s %s" msgstr "" @@ -6683,25 +7276,25 @@ msgstr "" msgid "Character constant too large" msgstr "" -#: expr.c:947 +#: expr.c:950 #, c-format msgid "expr.c(operand): bad atof_generic return val %d" msgstr "" -#: expr.c:1007 +#: expr.c:1010 msgid "Missing ')' assumed" msgstr "" -#: expr.c:1018 read.c:3866 +#: expr.c:1021 read.c:3864 msgid "EBCDIC constants are not supported" msgstr "" -#: expr.c:1088 +#: expr.c:1091 #, c-format msgid "Unary operator %c ignored because bad operand follows" msgstr "" -#: expr.c:1134 expr.c:1159 +#: expr.c:1137 expr.c:1162 msgid "syntax error in .startof. or .sizeof." msgstr "" @@ -6709,44 +7302,44 @@ msgstr "" msgid "Bad expression" msgstr "" -#: expr.c:1677 +#: expr.c:1680 msgid "missing operand; zero assumed" msgstr "" -#: expr.c:1710 +#: expr.c:1713 msgid "operation combines symbols in different segments" msgstr "" -#: expr.c:1726 +#: expr.c:1729 msgid "left operand is a bignum; integer 0 assumed" msgstr "" -#: expr.c:1728 +#: expr.c:1731 msgid "left operand is a float; integer 0 assumed" msgstr "" -#: expr.c:1737 +#: expr.c:1740 msgid "right operand is a bignum; integer 0 assumed" msgstr "" -#: expr.c:1739 +#: expr.c:1742 msgid "right operand is a float; integer 0 assumed" msgstr "" -#: expr.c:1787 symbols.c:1109 +#: expr.c:1797 symbols.c:1109 msgid "division by zero" msgstr "" -#: frags.c:85 +#: frags.c:87 #, c-format msgid "Can't extend frag %d. chars" msgstr "" -#: frags.c:170 +#: frags.c:175 msgid "attempt to allocate data in absolute section" msgstr "" -#: frags.c:176 +#: frags.c:181 msgid "attempt to allocate data in common section" msgstr "" @@ -6835,7 +7428,7 @@ msgid "form COL= needs absolute expresssion.\n" msgstr "" #. Turns the next expression into a string -#: gasp.c:1563 macro.c:366 +#: gasp.c:1563 macro.c:377 #, c-format msgid "% operator needs absolute expression" msgstr "" @@ -7107,14 +7700,14 @@ msgid "Can't close %s" msgstr "" #: input-scrub.c:270 -msgid "buffers nested too deeply" +msgid "macros nested too deeply" msgstr "" -#: input-scrub.c:371 +#: input-scrub.c:372 msgid "partial line at end of file ignored" msgstr "" -#: input-scrub.c:393 +#: input-scrub.c:394 msgid "Partial line at end of file ignored" msgstr "" @@ -7148,39 +7741,39 @@ msgstr "" msgid "New line in title" msgstr "" -#: macro.c:529 +#: macro.c:540 msgid "unexpected end of file in macro definition" msgstr "" -#: macro.c:538 +#: macro.c:549 msgid "missing ) after formals" msgstr "" -#: macro.c:695 +#: macro.c:706 msgid "missplaced )" msgstr "" -#: macro.c:957 +#: macro.c:968 msgid "confusion in formal parameters" msgstr "" -#: macro.c:962 +#: macro.c:973 msgid "macro formal argument does not exist" msgstr "" -#: macro.c:977 +#: macro.c:988 msgid "can't mix positional and keyword arguments" msgstr "" -#: macro.c:985 +#: macro.c:996 msgid "too many positional arguments" msgstr "" -#: macro.c:1165 +#: macro.c:1176 msgid "unexpected end of file in irp or irpc" msgstr "" -#: macro.c:1173 +#: macro.c:1184 msgid "missing model parameter" msgstr "" @@ -7251,319 +7844,319 @@ msgstr "" msgid "Can't continue" msgstr "" -#: read.c:454 +#: read.c:452 #, c-format msgid "error constructing %s pseudo-op table: %s" msgstr "" -#: read.c:819 +#: read.c:817 #, c-format msgid "Unknown pseudo-op: `%s'" msgstr "" -#: read.c:952 +#: read.c:950 #, c-format msgid "label \"%d$\" redefined" msgstr "" -#: read.c:1169 +#: read.c:1167 msgid ".abort detected. Abandoning ship." msgstr "" -#: read.c:1260 read.c:2033 +#: read.c:1258 read.c:2031 msgid "Alignment not a power of 2" msgstr "" -#: read.c:1268 +#: read.c:1266 #, c-format msgid "Alignment too large: %u assumed" msgstr "" -#: read.c:1300 +#: read.c:1298 msgid "expected fill pattern missing" msgstr "" -#: read.c:1497 +#: read.c:1495 #, c-format msgid "attempt to re-define symbol `%s'" msgstr "" #. Some of the back ends can't deal with non-positive line numbers. #. Besides, it's silly. -#: read.c:1621 +#: read.c:1619 #, c-format msgid "Line numbers must be positive; line number %d rejected." msgstr "" -#: read.c:1648 +#: read.c:1646 msgid "start address not supported" msgstr "" -#: read.c:1658 +#: read.c:1656 msgid ".err encountered" msgstr "" -#: read.c:1677 read.c:1679 +#: read.c:1675 read.c:1677 #, c-format msgid ".fail %ld encountered" msgstr "" -#: read.c:1716 +#: read.c:1714 #, c-format msgid ".fill size clamped to %d." msgstr "" -#: read.c:1721 +#: read.c:1719 msgid "Size negative: .fill ignored." msgstr "" -#: read.c:1727 +#: read.c:1725 msgid "Repeat < 0, .fill ignored" msgstr "" -#: read.c:1885 +#: read.c:1883 #, c-format msgid "unrecognized .linkonce type `%s'" msgstr "" -#: read.c:1898 read.c:1924 +#: read.c:1896 read.c:1922 msgid ".linkonce is not supported for this object file format" msgstr "" -#: read.c:1920 +#: read.c:1918 #, c-format msgid "bfd_set_section_flags: %s" msgstr "" -#: read.c:1989 +#: read.c:1987 #, c-format msgid "error setting flags for \".sbss\": %s" msgstr "" -#: read.c:2011 +#: read.c:2009 msgid "Expected comma after size" msgstr "" -#: read.c:2019 +#: read.c:2017 msgid "Missing alignment" msgstr "" -#: read.c:2161 +#: read.c:2159 msgid "bad expression" msgstr "" -#: read.c:2292 +#: read.c:2290 #, c-format msgid "attempt to redefine pseudo-op `%s' ignored" msgstr "" -#: read.c:2358 +#: read.c:2356 #, c-format msgid "invalid segment \"%s\"; segment \"%s\" assumed" msgstr "" -#: read.c:2364 +#: read.c:2362 msgid "ignoring fill value in absolute section" msgstr "" -#: read.c:2367 +#: read.c:2365 msgid "only constant offsets supported in absolute section" msgstr "" -#: read.c:2399 +#: read.c:2397 msgid "MRI style ORG pseudo-op not supported" msgstr "" -#: read.c:2487 +#: read.c:2485 msgid "unrecognized section type" msgstr "" -#: read.c:2555 +#: read.c:2553 #, c-format msgid "unrecognized section type `%s'" msgstr "" -#: read.c:2569 +#: read.c:2567 msgid "absolute sections are not supported" msgstr "" -#: read.c:2584 +#: read.c:2582 #, c-format msgid "unrecognized section command `%s'" msgstr "" -#: read.c:2672 +#: read.c:2670 #, c-format msgid "%s without %s" msgstr "" -#: read.c:2876 +#: read.c:2874 msgid "Unsupported variable size or fill value" msgstr "" -#: read.c:2901 +#: read.c:2899 msgid ".space repeat count is zero, ignored" msgstr "" -#: read.c:2903 +#: read.c:2901 msgid ".space repeat count is negative, ignored" msgstr "" -#: read.c:2932 +#: read.c:2930 msgid "space allocation too complex in absolute section" msgstr "" -#: read.c:2937 +#: read.c:2935 msgid "space allocation too complex in common section" msgstr "" -#: read.c:3024 read.c:4113 +#: read.c:3022 read.c:4111 #, c-format msgid "Bad floating literal: %s" msgstr "" -#: read.c:3100 +#: read.c:3098 #, c-format msgid "Rest of line ignored. First ignored character is `%c'." msgstr "" -#: read.c:3103 +#: read.c:3101 #, c-format msgid "Rest of line ignored. First ignored character valued 0x%x." msgstr "" -#: read.c:3154 +#: read.c:3152 msgid "illegal expression; zero assumed" msgstr "" -#: read.c:3156 +#: read.c:3154 msgid "missing expression; zero assumed" msgstr "" -#: read.c:3329 +#: read.c:3327 msgid "rva without symbol" msgstr "" -#: read.c:3454 +#: read.c:3452 msgid "attempt to store value in absolute section" msgstr "" -#: read.c:3492 read.c:4390 +#: read.c:3490 read.c:4388 msgid "zero assumed for missing expression" msgstr "" -#: read.c:3504 read.c:4402 +#: read.c:3502 read.c:4400 msgid "register value used as expression" msgstr "" #. Leading bits contain both 0s & 1s. -#: read.c:3594 +#: read.c:3592 #, c-format msgid "Value 0x%lx truncated to 0x%lx." msgstr "" -#: read.c:3610 +#: read.c:3608 #, c-format msgid "Bignum truncated to %d bytes" msgstr "" -#: read.c:3687 +#: read.c:3685 #, c-format msgid "unsupported BFD relocation size %u" msgstr "" -#: read.c:3776 +#: read.c:3774 msgid "using a bit field width of zero" msgstr "" -#: read.c:3784 +#: read.c:3782 #, c-format msgid "field width \"%s\" too complex for a bitfield" msgstr "" -#: read.c:3792 +#: read.c:3790 #, c-format msgid "field width %lu too big to fit in %d bytes: truncated to %d bits" msgstr "" -#: read.c:3813 +#: read.c:3811 #, c-format msgid "field value \"%s\" too complex for a bitfield" msgstr "" -#: read.c:3937 +#: read.c:3935 msgid "Unresolvable or nonpositive repeat count; using 1" msgstr "" -#: read.c:3988 +#: read.c:3986 #, c-format msgid "Unknown floating type type '%c'" msgstr "" -#: read.c:4010 +#: read.c:4008 msgid "Floating point constant too large" msgstr "" -#: read.c:4135 +#: read.c:4133 msgid "unresolvable or nonpositive repeat count; using 1" msgstr "" -#: read.c:4539 +#: read.c:4537 msgid "Expected <nn>" msgstr "" #. To be compatible with BSD 4.2 as: give the luser a linefeed!! -#: read.c:4572 read.c:4655 +#: read.c:4570 read.c:4653 msgid "Unterminated string: Newline inserted." msgstr "" -#: read.c:4663 +#: read.c:4661 msgid "Bad escaped character in string, '?' assumed" msgstr "" -#: read.c:4689 +#: read.c:4687 msgid "expected address expression; zero assumed" msgstr "" -#: read.c:4709 +#: read.c:4707 #, c-format msgid "symbol \"%s\" undefined; zero assumed" msgstr "" -#: read.c:4712 +#: read.c:4710 msgid "some symbol undefined; zero assumed" msgstr "" -#: read.c:4730 +#: read.c:4728 msgid "bad or irreducible absolute expression; zero assumed" msgstr "" -#: read.c:4768 +#: read.c:4766 msgid "This string may not contain '\\0'" msgstr "" -#: read.c:4807 +#: read.c:4805 msgid "Missing string" msgstr "" -#: read.c:5036 +#: read.c:5034 msgid "missing .func" msgstr "" -#: read.c:5053 +#: read.c:5051 msgid ".endfunc missing for previous .func" msgstr "" -#: stabs.c:209 +#: stabs.c:208 msgid ".stabs: Missing comma" msgstr "" -#: stabs.c:217 stabs.c:225 stabs.c:236 +#: stabs.c:216 stabs.c:224 stabs.c:235 #, c-format msgid ".stab%c: Missing comma" msgstr "" -#: stabs.c:415 +#: stabs.c:414 msgid "comma missing in .xstabs" msgstr "" diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 3a7af64..19b7f99 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2000-06-18 Stephane Carrez <stcarrez@worldnet.fr> + + * gas/m68k/all.exp: Don't execute tests if the target is m68hc11&12. + * gas/m68hc11/all.exp: Specific tests for m68hc11. + * gas/m68hc11/all_insns.[ds]: Check m68hc11 instructions. + * gas/m68hc11/insns[ds]: Another test. + * gas/m68hc11/lbranch.[ds]: Check branch optimization (gas relax). + * gas/m68hc11/opers12.[ds]: New files, check m68hc12 operands. + 2000-06-17 Alan Modra <alan@linuxcare.com.au> * gas/macros/strings.s: Don't start directives in first column diff --git a/gas/testsuite/gas/m68hc11/all.exp b/gas/testsuite/gas/m68hc11/all.exp new file mode 100644 index 0000000..15be4e3 --- /dev/null +++ b/gas/testsuite/gas/m68hc11/all.exp @@ -0,0 +1,18 @@ +# +# Some generic m68HC11 tests +# +if ![istarget "m68hc11-*-*"] then { + if ![istarget "m6811-*-*"] then { + if ![istarget "m68hc12-*-*"] then { + if ![istarget "m6812-*-*"] then { + return + } + } + } +} +run_dump_test insns +run_dump_test lbranch +run_dump_test all_insns + +# Some 68HC12 tests +run_dump_test opers12 diff --git a/gas/testsuite/gas/m68hc11/all_insns.d b/gas/testsuite/gas/m68hc11/all_insns.d new file mode 100644 index 0000000..adb516c --- /dev/null +++ b/gas/testsuite/gas/m68hc11/all_insns.d @@ -0,0 +1,352 @@ +#objdump: -d --prefix-addresses +#as: -m68hc11 +#name: all_insns + +# Test handling of basic instructions. + +.*: +file format elf32\-m68hc11 + +Disassembly of section .text: +0+000 <L0> aba +0+001 <L1> abx +0+002 <L2> aby +0+004 <L3> adca #103 +0+006 <L4> adca \*0+000 <L0> +0+008 <L5> adca 105,x +0+00a <L6> adca 0+000 <L0> +0+00d <L7> adca 81,x +0+00f <L8> adcb #255 +0+011 <L9> adcb \*0+000 <L0> +0+013 <L10> adcb 236,x +0+015 <L11> adcb 0+000 <L0> +0+018 <L12> adcb 205,x +0+01a <L13> adda #186 +0+01c <L14> adda \*0+000 <L0> +0+01e <L15> adda 242,x +0+020 <L16> adda 0+000 <L0> +0+023 <L17> adda 227,x +0+025 <L18> addb #70 +0+027 <L19> addb \*0+000 <L0> +0+029 <L20> addb 194,x +0+02b <L21> addb 0+000 <L0> +0+02e <L22> addb 248,x +0+030 <L23> addd #0000231b <L330\+0x2034> +0+033 <L24> addd \*0+000 <L0> +0+035 <L25> addd 231,x +0+037 <L26> addd 0+000 <L0> +0+03a <L27> addd 118,x +0+03c <L28> anda #90 +0+03e <L29> anda \*0+000 <L0> +0+040 <L30> anda 99,x +0+042 <L31> anda 0+000 <L0> +0+045 <L32> anda 159,x +0+047 <L33> andb #201 +0+049 <L34> andb \*0+000 <L0> +0+04b <L35> andb 102,x +0+04d <L36> andb 0+000 <L0> +0+050 <L37> andb 13,x +0+052 <L38> asl 183,x +0+054 <L39> asl 0+000 <L0> +0+057 <L40> asl 88,x +0+059 <L41> asla +0+05a <L42> aslb +0+05b <L43> asld +0+05c <L44> asr 163,x +0+05e <L45> asr 0+000 <L0> +0+061 <L46> asr 37,x +0+063 <L47> asra +0+064 <L48> asrb +0+065 <L49> bcs 0+06a <L50> +0+067 <L49\+0x2> jmp 0+0f3 <L93> +0+06a <L50> bclr \*0+000 <L0> #\$00 +0+06d <L51> bclr 88,x #\$00 +0+070 <L52> bclr 94,x #\$00 +0+073 <L53> bcc 0+078 <L54> +0+075 <L53\+0x2> jmp 0+1a8 <L171> +0+078 <L54> bne 0+07d <L55> +0+07a <L54\+0x2> jmp 0+1b6 <L178> +0+07d <L55> blt 0+082 <L56> +0+07f <L55\+0x2> jmp 0+1f5 <L205> +0+082 <L56> ble 0+087 <L57> +0+084 <L56\+0x2> jmp 0+1e4 <L198> +0+087 <L57> bls 0+08c <L58> +0+089 <L57\+0x2> jmp 0+18a <L155> +0+08c <L58> bcs 0+091 <L59> +0+08e <L58\+0x2> jmp 0+1bb <L180> +0+091 <L59> bita #84 +0+093 <L60> bita \*0+000 <L0> +0+095 <L61> bita 14,x +0+097 <L62> bita 0+000 <L0> +0+09a <L63> bita 116,x +0+09c <L64> bitb #65 +0+09e <L65> bitb \*0+000 <L0> +0+0a0 <L66> bitb 61,x +0+0a2 <L67> bitb 0+000 <L0> +0+0a5 <L68> bitb 135,x +0+0a7 <L69> ble 0+11d <L112> +0+0a9 <L70> bcc 0+0ae <L71> +0+0ab <L70\+0x2> jmp 0+22e <L233> +0+0ae <L71> bls 0+097 <L62> +0+0b0 <L72> bge 0+0b5 <L73> +0+0b2 <L72\+0x2> jmp 0+197 <L161> +0+0b5 <L73> bmi 0+09e <L65> +0+0b7 <L74> beq 0+0bc <L75> +0+0b9 <L74\+0x2> jmp 0+220 <L225> +0+0bc <L75> bmi 0+0c1 <L76> +0+0be <L75\+0x2> jmp 0+24e <L252> +0+0c1 <L76> bra 0+106 <L103> +0+0c3 <L77> brclr \*0+000 <L0> #\$00 0+145 <L125\+0x2> +0+0c7 <L78> brclr 151,x #\$00 0+127 <L115> +0+0cb <L79> brclr 107,x #\$00 0+0de <L84\+0x1> +0+0cf <L80> brn 0+082 <L56> +0+0d1 <L81> brset \*0+000 <L0> #\$00 0+141 <L124> +0+0d5 <L82> brset 176,x #\$00 0+154 <L132> +0+0d9 <L83> brset 50,x #\$00 0+119 <L110\+0x2> +0+0dd <L84> bset \*0+000 <L0> #\$00 +0+0e0 <L85> bset 24,x #\$00 +0+0e3 <L86> bset 92,x #\$00 +0+0e6 <L87> jsr 0+037 <L26> +0+0e9 <L88> bvs 0+0ee <L89> +0+0eb <L88\+0x2> jmp 0+253 <L254> +0+0ee <L89> bvs 0+0a2 <L67> +0+0f0 <L90> cba +0+0f1 <L91> clc +0+0f2 <L92> cli +0+0f3 <L93> clr 251,x +0+0f5 <L94> clr 0+000 <L0> +0+0f8 <L95> clr 170,x +0+0fa <L96> clra +0+0fb <L97> clrb +0+0fc <L98> clv +0+0fd <L99> cmpa #58 +0+0ff <L100> cmpa \*0+000 <L0> +0+101 <L101> cmpa 41,x +0+103 <L102> cmpa 0+000 <L0> +0+106 <L103> cmpa 230,x +0+108 <L104> cmpb #5 +0+10a <L105> cmpb \*0+000 <L0> +0+10c <L106> cmpb 124,x +0+10e <L107> cmpb 0+000 <L0> +0+111 <L108> cmpb 117,x +0+113 <L109> cpd #0+fd8 <L330\+0xcf1> +0+117 <L110> cpd \*0+000 <L0> +0+11a <L111> cpd 97,x +0+11d <L112> cpd 0+000 <L0> +0+121 <L113> cpd 249,x +0+124 <L114> cpx #0000af5c <L330\+0xac75> +0+127 <L115> cpx \*0+000 <L0> +0+129 <L116> cpx 168,x +0+12b <L117> cpx 0+000 <L0> +0+12e <L118> cpx 15,x +0+130 <L119> cpy #00004095 <L330\+0x3dae> +0+134 <L120> cpy \*0+000 <L0> +0+137 <L121> cpy 235,x +0+13a <L122> cpy 0+000 <L0> +0+13e <L123> cpy 179,x +0+141 <L124> com 5,x +0+143 <L125> com 0+000 <L0> +0+146 <L126> com 247,x +0+148 <L127> coma +0+149 <L128> comb +0+14a <L129> cpd #0000bf00 <L330\+0xbc19> +0+14e <L130> cpd \*0+000 <L0> +0+151 <L131> cpd 161,x +0+154 <L132> cpd 0+000 <L0> +0+158 <L133> cpd 229,x +0+15b <L134> cpx #00008fca <L330\+0x8ce3> +0+15e <L135> cpx \*0+000 <L0> +0+160 <L136> cpx 203,x +0+162 <L137> cpx 0+000 <L0> +0+165 <L138> cpx 72,x +0+167 <L139> cpy #0+247 <L248> +0+16b <L140> cpy \*0+000 <L0> +0+16e <L141> cpy 189,x +0+171 <L142> cpy 0+000 <L0> +0+175 <L143> cpy 35,x +0+178 <L144> daa +0+179 <L145> dec 30,x +0+17b <L146> dec 0+000 <L0> +0+17e <L147> dec 28,x +0+180 <L148> deca +0+181 <L149> decb +0+182 <L150> des +0+183 <L151> dex +0+184 <L152> dey +0+186 <L153> eora #123 +0+188 <L154> eora \*0+000 <L0> +0+18a <L155> eora 197,x +0+18c <L156> eora 0+000 <L0> +0+18f <L157> eora 115,x +0+191 <L158> eorb #90 +0+193 <L159> eorb \*0+000 <L0> +0+195 <L160> eorb 94,x +0+197 <L161> eorb 0+000 <L0> +0+19a <L162> eorb 121,x +0+19c <L163> fdiv +0+19d <L164> idiv +0+19e <L165> inc 99,x +0+1a0 <L166> inc 0+000 <L0> +0+1a3 <L167> inc 112,x +0+1a5 <L168> inca +0+1a6 <L169> incb +0+1a7 <L170> ins +0+1a8 <L171> inx +0+1a9 <L172> iny +0+1ab <L173> jmp 100,x +0+1ad <L174> jmp 0+000 <L0> +0+1b0 <L175> jmp 17,x +0+1b2 <L176> jsr \*0+000 <L0> +0+1b4 <L177> jsr 9,x +0+1b6 <L178> jsr 0+000 <L0> +0+1b9 <L179> jsr 170,x +0+1bb <L180> ldaa #212 +0+1bd <L181> ldaa \*0+000 <L0> +0+1bf <L182> ldaa 242,x +0+1c1 <L183> ldaa 0+000 <L0> +0+1c4 <L184> ldaa 16,x +0+1c6 <L185> ldab #175 +0+1c8 <L186> ldab \*0+000 <L0> +0+1ca <L187> ldab 51,x +0+1cc <L188> ldab 0+000 <L0> +0+1cf <L189> ldab 227,x +0+1d1 <L190> ldd #0000c550 <L330\+0xc269> +0+1d4 <L191> ldd \*0+000 <L0> +0+1d6 <L192> ldd 71,x +0+1d8 <L193> ldd 0+000 <L0> +0+1db <L194> ldd 92,x +0+1dd <L195> lds #00004fbb <L330\+0x4cd4> +0+1e0 <L196> lds \*0+000 <L0> +0+1e2 <L197> lds 34,x +0+1e4 <L198> lds 0+000 <L0> +0+1e7 <L199> lds 186,x +0+1e9 <L200> ldx #0000579b <L330\+0x54b4> +0+1ec <L201> ldx \*0+000 <L0> +0+1ee <L202> ldx 245,x +0+1f0 <L203> ldx 0+000 <L0> +0+1f3 <L204> ldx 225,x +0+1f5 <L205> ldy #0000ac1a <L330\+0xa933> +0+1f9 <L206> ldy \*0+000 <L0> +0+1fc <L207> ldy 127,x +0+1ff <L208> ldy 0+000 <L0> +0+203 <L209> ldy 248,x +0+206 <L210> asl 41,x +0+208 <L211> asl 0+000 <L0> +0+20b <L212> asl 164,x +0+20d <L213> asla +0+20e <L214> aslb +0+20f <L215> asld +0+210 <L216> lsr 27,x +0+212 <L217> lsr 0+000 <L0> +0+215 <L218> lsr 181,x +0+217 <L219> lsra +0+218 <L220> lsrb +0+219 <L221> lsrd +0+21a <L222> mul +0+21b <L223> neg 202,x +0+21d <L224> neg 0+000 <L0> +0+220 <L225> neg 232,x +0+222 <L226> nega +0+223 <L227> negb +0+224 <L228> nop +0+225 <L229> oraa #152 +0+227 <L230> oraa \*0+000 <L0> +0+229 <L231> oraa 56,x +0+22b <L232> oraa 0+000 <L0> +0+22e <L233> oraa 121,x +0+230 <L234> orab #77 +0+232 <L235> orab \*0+000 <L0> +0+234 <L236> orab 52,x +0+236 <L237> orab 0+000 <L0> +0+239 <L238> orab 95,x +0+23b <L239> psha +0+23c <L240> pshb +0+23d <L241> pshx +0+23e <L242> pshy +0+240 <L243> pula +0+241 <L244> pulb +0+242 <L245> pulx +0+243 <L246> puly +0+245 <L247> rol 78,x +0+247 <L248> rol 0+000 <L0> +0+24a <L249> rol 250,x +0+24c <L250> rola +0+24d <L251> rolb +0+24e <L252> ror 203,x +0+250 <L253> ror 0+000 <L0> +0+253 <L254> ror 5,x +0+255 <L255> rora +0+256 <L256> rorb +0+257 <L257> rti +0+258 <L258> rts +0+259 <L259> sba +0+25a <L260> sbca #172 +0+25c <L261> sbca \*0+000 <L0> +0+25e <L262> sbca 33,x +0+260 <L263> sbca 0+000 <L0> +0+263 <L264> sbca 170,x +0+265 <L265> sbcb #26 +0+267 <L266> sbcb \*0+000 <L0> +0+269 <L267> sbcb 162,x +0+26b <L268> sbcb 0+000 <L0> +0+26e <L269> sbcb 112,x +0+270 <L270> sec +0+271 <L271> sei +0+272 <L272> sev +0+273 <L273> staa \*0+000 <L0> +0+275 <L274> staa 115,x +0+277 <L275> staa 0+000 <L0> +0+27a <L276> staa 4,x +0+27c <L277> stab \*0+000 <L0> +0+27e <L278> stab 211,x +0+280 <L279> stab 0+000 <L0> +0+283 <L280> stab 148,x +0+285 <L281> std \*0+000 <L0> +0+287 <L282> std 175,x +0+289 <L283> std 0+000 <L0> +0+28c <L284> std 240,x +0+28e <L285> stop +0+28f <L286> sts \*0+000 <L0> +0+291 <L287> sts 158,x +0+293 <L288> sts 0+000 <L0> +0+296 <L289> sts 50,x +0+298 <L290> stx \*0+000 <L0> +0+29a <L291> stx 73,x +0+29c <L292> stx 0+000 <L0> +0+29f <L293> stx 130,x +0+2a1 <L294> sty \*0+000 <L0> +0+2a4 <L295> sty 169,x +0+2a7 <L296> sty 0+000 <L0> +0+2ab <L297> sty 112,x +0+2ae <L298> suba #212 +0+2b0 <L299> suba \*0+000 <L0> +0+2b2 <L300> suba 138,x +0+2b4 <L301> suba 0+000 <L0> +0+2b7 <L302> suba 84,x +0+2b9 <L303> subb #72 +0+2bb <L304> subb \*0+000 <L0> +0+2bd <L305> subb 10,x +0+2bf <L306> subb 0+000 <L0> +0+2c2 <L307> subb 213,x +0+2c4 <L308> subd #0000f10e <L330\+0xee27> +0+2c7 <L309> subd \*0+000 <L0> +0+2c9 <L310> subd 168,x +0+2cb <L311> subd 0+000 <L0> +0+2ce <L312> subd 172,x +0+2d0 <L313> swi +0+2d1 <L314> tab +0+2d2 <L315> tap +0+2d3 <L316> tba + ... +0+2d5 <L318> tpa +0+2d6 <L319> tst 91,x +0+2d8 <L320> tst 0+000 <L0> +0+2db <L321> tst 142,x +0+2dd <L322> tsta +0+2de <L323> tstb +0+2df <L324> tsx +0+2e0 <L325> tsy +0+2e2 <L326> txs +0+2e3 <L327> tys +0+2e5 <L328> wai +0+2e6 <L329> xgdx +0+2e7 <L330> xgdy diff --git a/gas/testsuite/gas/m68hc11/all_insns.s b/gas/testsuite/gas/m68hc11/all_insns.s new file mode 100644 index 0000000..f20b5b9 --- /dev/null +++ b/gas/testsuite/gas/m68hc11/all_insns.s @@ -0,0 +1,335 @@ +# Example of M68hc11 instructions + .sect .text +_start: +L0: aba +L1: abx +L2: aby +L3: adca #103 +L4: adca *Z198 +L5: adca 105,X +L6: adca symbol115 +L7: adca 81,X +L8: adcb #255 +L9: adcb *Z74 +L10: adcb 236,X +L11: adcb symbol41 +L12: adcb 205,X +L13: adda #186 +L14: adda *Z171 +L15: adda 242,X +L16: adda symbol251 +L17: adda 227,X +L18: addb #70 +L19: addb *Z124 +L20: addb 194,X +L21: addb symbol84 +L22: addb 248,X +L23: addd #8987 +L24: addd *Z232 +L25: addd 231,X +L26: addd symbol141 +L27: addd 118,X +L28: anda #90 +L29: anda *Z46 +L30: anda 99,X +L31: anda symbol51 +L32: anda 159,X +L33: andb #201 +L34: andb *Z154 +L35: andb 102,X +L36: andb symbol50 +L37: andb 13,X +L38: asl 183,X +L39: asl symbol49 +L40: asl 88,X +L41: asla +L42: aslb +L43: asld +L44: asr 163,X +L45: asr symbol90 +L46: asr 37,X +L47: asra +L48: asrb +L49: bcc L93 +L50: bclr *Z5 #$17 +L51: bclr 88,X #$e9 +L52: bclr 94,X #$d4 +L53: bcs L171 +L54: beq L178 +L55: bge L205 +L56: bgt L198 +L57: bhi L155 +L58: bhs L180 +L59: bita #84 +L60: bita *Z17 +L61: bita 14,X +L62: bita symbol130 +L63: bita 116,X +L64: bitb #65 +L65: bitb *Z33 +L66: bitb 61,X +L67: bitb symbol220 +L68: bitb 135,X +L69: ble L112 +L70: blo L233 +L71: bls L62 +L72: blt L161 +L73: bmi L65 +L74: bne L225 +L75: bpl L252 +L76: bra L103 +L77: brclr *Z62 #$01 .+126 +L78: brclr 151,X #$ea .+92 +L79: brclr 107,X #$96 .+15 +L80: brn L56 +L81: brset *Z92 #$2a .+108 +L82: brset 176,X #$3b .+123 +L83: brset 50,X #$af .+60 +L84: bset *Z84 #$ec +L85: bset 24,X #$db +L86: bset 92,X #$02 +L87: bsr L26 +L88: bvc L254 +L89: bvs L67 +L90: cba +L91: clc +L92: cli +L93: clr 251,X +L94: clr symbol250 +L95: clr 170,X +L96: clra +L97: clrb +L98: clv +L99: cmpa #58 +L100: cmpa *Z251 +L101: cmpa 41,X +L102: cmpa symbol209 +L103: cmpa 230,X +L104: cmpb #5 +L105: cmpb *Z60 +L106: cmpb 124,X +L107: cmpb symbol148 +L108: cmpb 117,X +L109: cmpd #4056 +L110: cmpd *Z190 +L111: cmpd 97,X +L112: cmpd symbol137 +L113: cmpd 249,X +L114: cmpx #44892 +L115: cmpx *Z187 +L116: cmpx 168,X +L117: cmpx symbol153 +L118: cmpx 15,X +L119: cmpy #16533 +L120: cmpy *Z177 +L121: cmpy 235,X +L122: cmpy symbol241 +L123: cmpy 179,X +L124: com 5,X +L125: com symbol239 +L126: com 247,X +L127: coma +L128: comb +L129: cpd #48896 +L130: cpd *Z233 +L131: cpd 161,X +L132: cpd symbol58 +L133: cpd 229,X +L134: cpx #36810 +L135: cpx *Z11 +L136: cpx 203,X +L137: cpx symbol208 +L138: cpx 72,X +L139: cpy #583 +L140: cpy *Z100 +L141: cpy 189,X +L142: cpy symbol31 +L143: cpy 35,X +L144: daa +L145: dec 30,X +L146: dec symbol168 +L147: dec 28,X +L148: deca +L149: decb +L150: des +L151: dex +L152: dey +L153: eora #123 +L154: eora *Z100 +L155: eora 197,X +L156: eora symbol20 +L157: eora 115,X +L158: eorb #90 +L159: eorb *Z197 +L160: eorb 94,X +L161: eorb symbol75 +L162: eorb 121,X +L163: fdiv +L164: idiv +L165: inc 99,X +L166: inc symbol59 +L167: inc 112,X +L168: inca +L169: incb +L170: ins +L171: inx +L172: iny +L173: jmp 100,X +L174: jmp symbol36 +L175: jmp 17,X +L176: jsr *Z158 +L177: jsr 9,X +L178: jsr symbol220 +L179: jsr 170,X +L180: ldaa #212 +L181: ldaa *Z172 +L182: ldaa 242,X +L183: ldaa symbol27 +L184: ldaa 16,X +L185: ldab #175 +L186: ldab *Z59 +L187: ldab 51,X +L188: ldab symbol205 +L189: ldab 227,X +L190: ldd #50512 +L191: ldd *Z72 +L192: ldd 71,X +L193: ldd symbol21 +L194: ldd 92,X +L195: lds #20411 +L196: lds *Z111 +L197: lds 34,X +L198: lds symbol25 +L199: lds 186,X +L200: ldx #22427 +L201: ldx *Z125 +L202: ldx 245,X +L203: ldx symbol11 +L204: ldx 225,X +L205: ldy #44058 +L206: ldy *Z28 +L207: ldy 127,X +L208: ldy symbol35 +L209: ldy 248,X +L210: lsl 41,X +L211: lsl symbol248 +L212: lsl 164,X +L213: lsla +L214: lslb +L215: lsld +L216: lsr 27,X +L217: lsr symbol19 +L218: lsr 181,X +L219: lsra +L220: lsrb +L221: lsrd +L222: mul +L223: neg 202,X +L224: neg symbol78 +L225: neg 232,X +L226: nega +L227: negb +L228: nop +L229: oraa #152 +L230: oraa *Z50 +L231: oraa 56,X +L232: oraa symbol224 +L233: oraa 121,X +L234: orab #77 +L235: orab *Z61 +L236: orab 52,X +L237: orab symbol188 +L238: orab 95,X +L239: psha +L240: pshb +L241: pshx +L242: pshy +L243: pula +L244: pulb +L245: pulx +L246: puly +L247: rol 78,X +L248: rol symbol119 +L249: rol 250,X +L250: rola +L251: rolb +L252: ror 203,X +L253: ror symbol108 +L254: ror 5,X +L255: rora +L256: rorb +L257: rti +L258: rts +L259: sba +L260: sbca #172 +L261: sbca *Z134 +L262: sbca 33,X +L263: sbca symbol43 +L264: sbca 170,X +L265: sbcb #26 +L266: sbcb *Z85 +L267: sbcb 162,X +L268: sbcb symbol190 +L269: sbcb 112,X +L270: sec +L271: sei +L272: sev +L273: staa *Z181 +L274: staa 115,X +L275: staa symbol59 +L276: staa 4,X +L277: stab *Z92 +L278: stab 211,X +L279: stab symbol54 +L280: stab 148,X +L281: std *Z179 +L282: std 175,X +L283: std symbol226 +L284: std 240,X +L285: stop +L286: sts *Z228 +L287: sts 158,X +L288: sts symbol79 +L289: sts 50,X +L290: stx *Z21 +L291: stx 73,X +L292: stx symbol253 +L293: stx 130,X +L294: sty *Z78 +L295: sty 169,X +L296: sty symbol8 +L297: sty 112,X +L298: suba #212 +L299: suba *Z178 +L300: suba 138,X +L301: suba symbol41 +L302: suba 84,X +L303: subb #72 +L304: subb *Z154 +L305: subb 10,X +L306: subb symbol188 +L307: subb 213,X +L308: subd #61710 +L309: subd *Z24 +L310: subd 168,X +L311: subd symbol68 +L312: subd 172,X +L313: swi +L314: tab +L315: tap +L316: tba +L317: test +L318: tpa +L319: tst 91,X +L320: tst symbol243 +L321: tst 142,X +L322: tsta +L323: tstb +L324: tsx +L325: tsy +L326: txs +L327: tys +L328: wai +L329: xgdx +L330: xgdy + diff --git a/gas/testsuite/gas/m68hc11/insns.d b/gas/testsuite/gas/m68hc11/insns.d new file mode 100644 index 0000000..fe09680 --- /dev/null +++ b/gas/testsuite/gas/m68hc11/insns.d @@ -0,0 +1,44 @@ +#objdump: -d --prefix-addresses +#as: -m68hc11 +#name: insns + +# Test handling of basic instructions. + +.*: +file format elf32\-m68hc11 + +Disassembly of section .text: +0+000 <_start> lds #0+0400 <L1\+0x3a9> +0+003 <_start\+0x3> ldx #0+0001 <_start\+0x1> +0+006 <Loop> jsr 0+0010 <test> +0+009 <Loop\+0x3> dex +0+00a <Loop\+0x4> bne 0+0006 <Loop> +0+00c <Stop> .byte 0xcd, 0x03 +0+00e <Stop\+0x2> bra 0+0000 <_start> +0+010 <test> ldd #0+0002 <_start\+0x2> +0+013 <test\+0x3> jsr 0+0017 <test2> +0+016 <test\+0x6> rts +0+017 <test2> ldx 23,y +0+01a <test2\+0x3> std 23,x +0+01c <test2\+0x5> ldd 0,x +0+01e <test2\+0x7> sty 0,y +0+021 <test2\+0xa> stx 0,y +0+024 <test2\+0xd> brclr 6,x #\$04 00000017 <test2> +0+028 <test2\+0x11> brclr 12,x #\$08 00000017 <test2> +0+02c <test2\+0x15> ldd \*0+0 <_start> +0+02e <test2\+0x17> ldx \*0+2 <_start\+0x2> +0+030 <test2\+0x19> clr 0+0 <_start> +0+033 <test2\+0x1c> clr 0+1 <_start\+0x1> +0+036 <test2\+0x1f> bne 0+34 <test2\+0x1d> +0+038 <test2\+0x21> beq 0+3c <test2\+0x25> +0+03a <test2\+0x23> bclr \*0+1 <_start\+0x1> #\$20 +0+03d <test2\+0x26> brclr \*0+2 <_start\+0x2> #\$28 0+017 <test2> +0+041 <test2\+0x2a> ldy #0+ffec <L1\+0xff95> +0+045 <test2\+0x2e> ldd 12,y +0+048 <test2\+0x31> addd 44,y +0+04b <test2\+0x34> addd 50,y +0+04e <test2\+0x37> subd 0+02c <test2\+0x15> +0+051 <test2\+0x3a> subd #0+02c <test2\+0x15> +0+054 <test2\+0x3d> jmp 0000000c <Stop> +0+057 <L1> anda #23 +0+059 <L1\+0x2> andb #0 +0+05b <L1\+0x4> rts
\ No newline at end of file diff --git a/gas/testsuite/gas/m68hc11/insns.s b/gas/testsuite/gas/m68hc11/insns.s new file mode 100644 index 0000000..2b2f971 --- /dev/null +++ b/gas/testsuite/gas/m68hc11/insns.s @@ -0,0 +1,60 @@ +# Test for correct generation of 68HC11 insns. + + .globl _start + .sect .text + +_start: + lds #stack+1024 + ldx #1 +Loop: + jsr test + dex + bne Loop +Stop: + + .byte 0xcd + .byte 3 + bra _start + +test: + ldd #2 + jsr test2 + rts + +B_low = 12 +A_low = 44 +D_low = 50 +value = 23 + + .globl test2 +test2: + ldx value,y + std value,x + ldd ,x + sty ,y + stx ,y + brclr 6,x,#4,test2 + brclr 12,x #8 test2 + ldd *ZD1 + ldx *ZD1+2 + clr *ZD2 + clr *ZD2+1 + bne .-4 + beq .+2 + bclr *ZD1+1, #32 + brclr *ZD2+2, #40, test2 + ldy #24+_start-44 + ldd B_low,y + addd A_low,y + addd D_low,y + subd A_low + subd #A_low + jmp Stop +L1: + anda #%lo(test2) + andb #%hi(test2) + rts + + .sect .data + +.comm stack, 1024 diff --git a/gas/testsuite/gas/m68hc11/lbranch.d b/gas/testsuite/gas/m68hc11/lbranch.d new file mode 100644 index 0000000..74cda03 --- /dev/null +++ b/gas/testsuite/gas/m68hc11/lbranch.d @@ -0,0 +1,47 @@ +#objdump: -d --prefix-addresses +#as: -m68hc11 +#name: lbranch + +# Test handling of basic instructions. + +.*: +file format elf32\-m68hc11 + +Disassembly of section .text: +0+0000 <_rcall> ldaa #16 +0+0002 <_rcall\+0x2> jmp 0+010b <Lend> +0+0005 <_rcall\+0x5> jsr 0+011b <toto> +0+0008 <_rcall\+0x8> beq 0+000d <_rcall\+0xd> +0+000a <_rcall\+0xa> jmp 0+011b <toto> +0+000d <_rcall\+0xd> bne 0+0012 <_rcall\+0x12> +0+000f <_rcall\+0xf> jmp 0+011b <toto> +0+0012 <_rcall\+0x12> bcc 0+0017 <_rcall\+0x17> +0+0014 <_rcall\+0x14> jmp 0+011b <toto> +0+0017 <_rcall\+0x17> bcs 0+001c <_rcall\+0x1c> +0+0019 <_rcall\+0x19> jmp 0+011b <toto> +0+001c <_rcall\+0x1c> xgdx +0+001d <_rcall\+0x1d> xgdx +0+001e <_rcall\+0x1e> bne 0+0023 <_rcall\+0x23> +0+0020 <_rcall\+0x20> jmp 0+0180 <bidule> +0+0023 <_rcall\+0x23> bcc 0+0028 <_rcall\+0x28> +0+0025 <_rcall\+0x25> jmp 0+0180 <bidule> +0+0028 <_rcall\+0x28> bcs 0+002d <_rcall\+0x2d> +0+002a <_rcall\+0x2a> jmp 0+0180 <bidule> +0+002d <_rcall\+0x2d> xgdx +0+002e <_rcall\+0x2e> jmp 0+00c8 <_rcall\+0xc8> +0+0031 <_rcall\+0x31> jsr 0+0783 <bidule\+0x603> +0+0034 <_rcall\+0x34> beq 0+0039 <_rcall\+0x39> +0+0036 <_rcall\+0x36> jmp 0+010b <Lend> +0+0039 <_rcall\+0x39> jsr 0+011b <toto> +0+003c <_rcall\+0x3c> bne 0+0041 <_rcall\+0x41> +0+003e <_rcall\+0x3e> jmp 0+011b <toto> +[ ]*\.\.\. +0+0109 <_rcall\+0x109> ldaa \*0+0000 <_rcall> +0+010b <Lend> bls 0+0110 <Lend\+0x5> +0+010d <Lend\+0x2> jmp 0+0000 <_rcall> +0+0110 <Lend\+0x5> bhi 0+0115 <Lend\+0xa> +0+0112 <Lend\+0x7> jmp 0+0000 <_rcall> +0+0115 <Lend\+0xa> jsr 0+0000 <_rcall> +0+0118 <Lend\+0xd> ldx #0+000c <_rcall\+0xc> +0+011b <toto> rts +[ ]*\.\.\. +0+0180 <bidule> rts diff --git a/gas/testsuite/gas/m68hc11/lbranch.s b/gas/testsuite/gas/m68hc11/lbranch.s new file mode 100644 index 0000000..568d8a7 --- /dev/null +++ b/gas/testsuite/gas/m68hc11/lbranch.s @@ -0,0 +1,41 @@ +# Test for the 68HC11 long branch switch + .text + .globl _rcall + .globl _start +_start: +_rcall: + ldaa #0x10 ;86 10 + jbra Lend ; Must be switched to a jmp + jbsr toto ; -> to a jsr + jbne toto ; -> to a beq+jmp + jbeq toto ; -> to a bne+jmp + jbcs toto ; -> to a bcc+jmp + jbcc toto ; -> to a bcs+jmp + xgdx + xgdx + beq bidule ; -> to a bne+jmp + bcs bidule ; -> to a bcc+jmp + bcc bidule ; -> to a bcs+jmp + xgdx + jbra 200 + jbsr 1923 + bne Lend ; -> to a beq+jmp + jbsr toto + jbeq toto + .skip 200 + ldaa *dir ;96 33 +Lend: + bhi external_op + bls external_op + bsr out + ldx #12 +toto: + rts + .skip 100 +bidule: + rts + .sect ".page0" +dir: + .long 0 + + ; END diff --git a/gas/testsuite/gas/m68hc11/opers12.d b/gas/testsuite/gas/m68hc11/opers12.d new file mode 100644 index 0000000..fec02eb --- /dev/null +++ b/gas/testsuite/gas/m68hc11/opers12.d @@ -0,0 +1,70 @@ +#objdump: -d --prefix-addresses +#as: -m68hc12 +#name: opers + +.*: +file format elf32\-m68hc12 + +Disassembly of section .text: +0+000 <start> anda \[12,X\] +0+004 <start\+0x4> ldaa #10 +0+006 <start\+0x6> ldx 0+009 <L1> +0+009 <L1> ldy 0,X +0+00b <L1\+0x2> addd 1,Y +0+00d <L1\+0x4> subd -1,Y +0+00f <L1\+0x6> eora 15,Y +0+011 <L1\+0x8> eora -16,Y +0+013 <L1\+0xa> eorb 16,Y +0+016 <L1\+0xd> eorb -17,Y +0+019 <L1\+0x10> oraa 128,SP +0+01c <L1\+0x13> orab -128,SP +0+01f <L1\+0x16> orab 255,X +0+022 <L1\+0x19> orab -256,X +0+025 <L1\+0x1c> anda 256,X +0+029 <L1\+0x20> andb -257,X +0+02d <L1\+0x24> anda \[12,X\] +0+031 <L1\+0x28> ldaa \[257,Y\] +0+035 <L1\+0x2c> ldab \[32767,SP\] +0+039 <L1\+0x30> ldd \[32768,PC\] +0+03d <L1\+0x34> ldd 0,PC +0+040 <L1\+0x37> std A,X +0+042 <L1\+0x39> ldx B,X +0+044 <L1\+0x3b> stx D,Y +0+046 <L1\+0x3d> addd 1,\+X +0+048 <L1\+0x3f> addd 2,\+X +0+04a <L1\+0x41> addd 8,\+X +0+04c <L1\+0x43> addd 1,SP\+ +0+04e <L1\+0x45> addd 2,SP\+ +0+050 <L1\+0x47> addd 8,SP\+ +0+052 <L1\+0x49> subd 1,\-Y +0+054 <L1\+0x4b> subd 2,\-Y +0+056 <L1\+0x4d> subd 8,\-Y +0+058 <L1\+0x4f> addd 1,Y\- +0+05a <L1\+0x51> addd 2,Y\- +0+05c <L1\+0x53> addd 8,Y\- +0+05e <L1\+0x55> std \[D,X\] +0+060 <L1\+0x57> std \[D,Y\] +0+062 <L1\+0x59> std \[D,SP\] +0+064 <L1\+0x5b> std \[D,PC\] +0+066 <L1\+0x5d> beq 0+009 <L1> +0+068 <L1\+0x5f> lbeq 0+000 <start> +0+06c <L1\+0x63> lbcc 0+0bc <L2> +0+070 <L1\+0x67> movb 0+000 <start>, 1,X +0+075 <L1\+0x6c> movw 1,X, 0+000 <start> +0+07a <L1\+0x71> movb 0+000 <start>, 1,\+X +0+07f <L1\+0x76> movb 0+000 <start>, 1,\-X +0+084 <L1\+0x7b> movb #23, 1,\-SP +0+088 <L1\+0x7f> movb 0+009 <L1>, 0+0bc <L2> +0+08e <L1\+0x85> movb 0+009 <L1>, A,X +0+093 <L1\+0x8a> movw 0+009 <L1>, B,X +0+098 <L1\+0x8f> movw 0+009 <L1>, D,X +0+09d <L1\+0x94> movw D,X, A,X +0+0a1 <L1\+0x98> movw B,SP, D,PC +0+0a5 <L1\+0x9c> movw B,SP, 0+009 <L1> +0+0aa <L1\+0xa1> movw B,SP, 1,X +0+0ae <L1\+0xa5> movw D,X, A,Y +0+0b2 <L1\+0xa9> trap #48 +0+0b4 <L1\+0xab> trap #57 +0+0b6 <L1\+0xad> trap #64 +0+0b8 <L1\+0xaf> trap #128 +0+0ba <L1\+0xb1> trap #255 +0+0bc <L2> rts diff --git a/gas/testsuite/gas/m68hc11/opers12.s b/gas/testsuite/gas/m68hc11/opers12.s new file mode 100644 index 0000000..dcf53d1 --- /dev/null +++ b/gas/testsuite/gas/m68hc11/opers12.s @@ -0,0 +1,72 @@ + +# +# Try to verify all operand modes for 68HC12 +# + sect .text + globl start + +start: + anda [12,x] + ldaa #10 + ldx L1 +L1: ldy ,x + addd 1,y + subd -1,y + eora 15,y + eora -16,y + eorb 16,y + eorb -17,y + oraa 128,sp + orab -128,sp + orab 255,x + orab -256,x + anda 256,x + andb -257,x + anda [12,x] + ldaa [257,y] + ldab [32767,sp] + ldd [32768,pc] + ldd L1,pc + std a,x + ldx b,x + stx d,y + addd 1,+x + addd 2,+x + addd 8,+x + addd 1,sp+ + addd 2,sp+ + addd 8,sp+ + subd 1,-y + subd 2,-y + subd 8,-y + addd 1,y- + addd 2,y- + addd 8,y- + std [d,x] + std [d,y] + std [d,sp] + std [d,pc] + beq L1 + lbeq start + lbcc L2 + movb start, 1,x + movw 1,x, start + movb start, 1,+x + movb start, 1,-x + movb #23, 1,-sp + movb L1, L2 + movb L1, a,x + movw L1, b,x + movw L1, d,x + movw d,x, a,x + movw b,sp, d,pc + movw b,sp, L1 + movw b,sp, 1,x + movw d,x, a,y + trap #0x30 + trap #0x39 + trap #0x40 + trap #0x80 + trap #255 +L2: + rts diff --git a/gas/testsuite/gas/m68k/all.exp b/gas/testsuite/gas/m68k/all.exp index 88ab2a0..d526170 100644 --- a/gas/testsuite/gas/m68k/all.exp +++ b/gas/testsuite/gas/m68k/all.exp @@ -1,6 +1,18 @@ # # Some generic m68k tests # +if [istarget "m68hc11-*-*"] then { + return +} +if [istarget "m68hc12-*-*"] then { + return +} +if [istarget "m6811-*-*"] then { + return +} +if [istarget "m6812-*-*"] then { + return +} if [istarget m68*-*-*] then { gas_test "t2.s" "" "" "cross-section branch" if [istarget m68*-motorola-sysv] then { @@ -36,4 +48,4 @@ if [istarget m68*-*-*] then { } if [info exists errorInfo] then { unset errorInfo - } +} |