* config/sh/tm-sh.h (BELIEVE_PCC_PROMOTION): Define, so that
[deliverable/binutils-gdb.git] / gas / config / tc-tahoe.c
index ed5fb61984ee649106c0b4ca5817884a130288cd..2bd63ca7b16a47354abfa7d18b2325573e601c8a 100644 (file)
@@ -247,8 +247,7 @@ pc_rel_disp? That sort of thing.) */
 /* This is the table used by gas to figure out relaxing modes. The fields are
    forward_branch reach, backward_branch reach, number of bytes it would take,
    where the next biggest branch is. */
-const relax_typeS
-  md_relax_table[] =
+const relax_typeS md_relax_table[] =
 {
   {
     1, 1, 0, 0
@@ -358,98 +357,77 @@ md_begin ()
   char *errorval = 0;
   int synthetic_too = 1;       /* If 0, just use real opcodes. */
 
-  if ((op_hash = hash_new ()))
-    {
-      for (tP = totstrs; *tP->name && !*errorval; tP++)
-       {
-         errorval = hash_insert (op_hash, tP->name, &tP->detail);
-       }
-      if (synthetic_too)
-       {
-         for (tP = synthetic_totstrs; *tP->name && !*errorval; tP++)
-           {
-             errorval = hash_insert (op_hash, tP->name, &tP->detail);
-           }
-       }
-    }
-  else
-    {
-      errorval = "Virtual memory exceeded";
-    }
+  op_hash = hash_new ();
+
+  for (tP = totstrs; *tP->name && !errorval; tP++)
+    errorval = hash_insert (op_hash, tP->name, &tP->detail);
+
+  if (synthetic_too)
+    for (tP = synthetic_totstrs; *tP->name && !errorval; tP++)
+      errorval = hash_insert (op_hash, tP->name, &tP->detail);
+
   if (errorval)
     as_fatal (errorval);
 }
-
-void
-md_end ()
-{
-}                              /* md_end */
 \f
+CONST char *md_shortopts = "ad:STt:V";
+struct option md_longopts[] = {
+  {NULL, no_argument, NULL, 0}
+};
+size_t md_longopts_size = sizeof(md_longopts);
+
 int
-md_parse_option (argP, cntP, vecP)
-     char **argP;
-     int *cntP;
-     char ***vecP;
+md_parse_option (c, arg)
+     int c;
+     char *arg;
 {
-  char *temp_name;             /* name for -t or -d options */
-  char opt;
-
-  switch (**argP)
+  switch (c)
     {
     case 'a':
-      as_warn ("The -a option doesn't exits. (Dispite what the man page says!");
+      as_warn (_("The -a option doesn't exist. (Despite what the man page says!"));
+      break;
 
-    case 'J':
-      as_warn ("JUMPIFY (-J) not implemented, use psuedo ops instead.");
+    case 'd':
+      as_warn (_("Displacement length %s ignored!"), arg);
       break;
 
     case 'S':
-      as_warn ("SYMBOL TABLE not implemented");
-      break;                   /* SYMBOL TABLE not implemented */
+      as_warn (_("SYMBOL TABLE not implemented"));
+      break;
 
     case 'T':
-      as_warn ("TOKEN TRACE not implemented");
-      break;                   /* TOKEN TRACE not implemented */
+      as_warn (_("TOKEN TRACE not implemented"));
+      break;
 
-    case 'd':
     case 't':
-      opt = **argP;
-      if (**argP)
-       {                       /* Rest of argument is filename. */
-         temp_name = *argP;
-         while (**argP)
-           (*argP)++;
-       }
-      else if (*cntP)
-       {
-         while (**argP)
-           (*argP)++;
-         --(*cntP);
-         temp_name = *++(*vecP);
-         **vecP = NULL;        /* Remember this is not a file-name. */
-       }
-      else
-       {
-         as_warn ("I expected a filename after -%c.", opt);
-         temp_name = "{absent}";
-       }
-
-      if (opt == 'd')
-       as_warn ("Displacement length %s ignored!", temp_name);
-      else
-       as_warn ("I don't need or use temp. file \"%s\".", temp_name);
+      as_warn (_("I don't need or use temp. file \"%s\"."), arg);
       break;
 
     case 'V':
-      as_warn ("I don't use an interpass file! -V ignored");
+      as_warn (_("I don't use an interpass file! -V ignored"));
       break;
 
     default:
       return 0;
-
     }
+
   return 1;
 }
+
+void
+md_show_usage (stream)
+     FILE *stream;
+{
+  fprintf(stream, _("\
+Tahoe options:\n\
+-a                     ignored\n\
+-d LENGTH              ignored\n\
+-J                     ignored\n\
+-S                     ignored\n\
+-t FILE                        ignored\n\
+-T                     ignored\n\
+-V                     ignored\n"));
+}
 \f
 /* The functions in this section take numbers in the machine format, and
    munges them into Tahoe byte order.
@@ -460,18 +438,7 @@ md_number_to_chars (con, value, nbytes)
      valueT value;             /* The value of the bits. */
      int nbytes;               /* Number of bytes in the output. */
 {
-  int n = nbytes;
-  valueT v = value;
-
-  con += nbytes - 1;           /* Tahoes is (Bleah!) big endian */
-  while (nbytes--)
-    {
-      *con-- = value;          /* Lint wants & MASK_CHAR. */
-      value >>= BITS_PER_CHAR;
-    }
-  /* XXX line number probably botched for this warning message. */
-  if (value != 0 && value != -1)
-    as_warn ("Displacement (%ld) long for instruction field length (%d).", v, n);
+  number_to_chars_bigendian (con, value, nbytes);
 }
 
 #ifdef comment
@@ -491,11 +458,9 @@ tc_apply_fix (fixP, val)
      fixS *fixP;
      long val;
 {
-  /*   char *place = fixP->fx_where + fixP->fx_frag->fr_literal; */
   /* should never be called */
   know (0);
-  return;
-}                              /* tc_apply_fix() */
+}
 
 void                           /* Knows about order of bytes in address. */
 md_number_to_disp (con, value, nbytes)
@@ -585,9 +550,7 @@ tc_aout_fix_to_chars (where, fixP, segment_address_in_file)
                       ? 2
                       : 42)))) << 5) & 0x60)
              | ((!S_IS_DEFINED (fixP->fx_addsy) << 4) & 0x10));
-
-  return;
-}                              /* tc_aout_fix_to_chars() */
+}
 
 /* Relocate byte stuff */
 \f
@@ -769,8 +732,9 @@ md_estimate_size_before_relax (fragP, segment_type)
  *     Caller will turn frag into a ".space 0".
  */
 void
-md_convert_frag (headers, fragP)
+md_convert_frag (headers, seg, fragP)
      object_headers *headers;
+     segT seg;
      register fragS *fragP;
 {
   register char *addressP;     /* -> _var to change. */
@@ -1108,7 +1072,7 @@ tip_op (optex, topP)
       case 'l':
       case 'L':
        if (com_width)
-         as_warn ("Casting a branch displacement is bad form, and is ignored.");
+         as_warn (_("Casting a branch displacement is bad form, and is ignored."));
        else
          {
            c = (isupper (*point) ? tolower (*point) : *point);
@@ -1164,13 +1128,13 @@ tip_op (optex, topP)
            }
          if (ndx == -1)
            {
-             op_bad = "Couldn't parse the [index] in this operand.";
+             op_bad = _("Couldn't parse the [index] in this operand.");
              end = point;      /* Force all the rest of the tests to fail. */
            }
        }
       else
        {
-         op_bad = "Couldn't find the opening '[' for the index of this operand.";
+         op_bad = _("Couldn't find the opening '[' for the index of this operand.");
          end = point;          /* Force all the rest of the tests to fail. */
        }
     }
@@ -1210,7 +1174,7 @@ tip_op (optex, topP)
        }
       else
        {
-         op_bad = "Couldn't find the opening '(' for the deref of this operand.";
+         op_bad = _("Couldn't find the opening '(' for the deref of this operand.");
          end = point;          /* Force all the rest of the tests to fail. */
        }
     }
@@ -1220,7 +1184,7 @@ tip_op (optex, topP)
     {
       if (dec_inc != ' ')
        {
-         op_bad = "Operand can't be both pre-inc and post-dec.";
+         op_bad = _("Operand can't be both pre-inc and post-dec.");
          end = point;
        }
       else
@@ -1250,7 +1214,7 @@ tip_op (optex, topP)
     }
 
   if (imreg != -1 && reg != -1)
-    op_bad = "I parsed 2 registers in this operand.";
+    op_bad = _("I parsed 2 registers in this operand.");
 
   /*
    * Evaluate whats left of the expression to see if it's valid.
@@ -1300,19 +1264,19 @@ tip_op (optex, topP)
           * then coding up a frag for this case will be easy.
           */
          need_pass_2 = 1;
-         op_bad = "Can't relocate expression error.";
+         op_bad = _("Can't relocate expression error.");
          break;
 
        case O_big:
          /* This is an error. Tahoe doesn't allow any expressions
             bigger that a 32 bit long word. Any bigger has to be referenced
             by address. */
-         op_bad = "Expression is too large for a 32 bits.";
+         op_bad = _("Expression is too large for a 32 bits.");
          break;
        }
       if (*input_line_pointer != '\0')
        {
-         op_bad = "Junk at end of expression.";
+         op_bad = _("Junk at end of expression.");
        }
     }
 
@@ -1352,26 +1316,26 @@ tip_op (optex, topP)
          mode = TAHOE_DIRECT_REG;
          if (deferred || immediate || (dec_inc != ' ') ||
              (reg != -1) || !really_none)
-           op_bad = "Syntax error in direct register mode.";
+           op_bad = _("Syntax error in direct register mode.");
          else if (ndx != -1)
-           op_bad = "You can't index a register in direct register mode.";
+           op_bad = _("You can't index a register in direct register mode.");
          else if (imreg == SP_REG && access == 'r')
            op_bad =
-             "SP can't be the source operand with direct register addressing.";
+             _("SP can't be the source operand with direct register addressing.");
          else if (access == 'a')
-           op_bad = "Can't take the address of a register.";
+           op_bad = _("Can't take the address of a register.");
          else if (access == 'b')
-           op_bad = "Direct Register can't be used in a branch.";
+           op_bad = _("Direct Register can't be used in a branch.");
          else if (width == 'q' && ((imreg % 2) || (imreg > 13)))
-           op_bad = "For quad access, the register must be even and < 14.";
+           op_bad = _("For quad access, the register must be even and < 14.");
          else if (call_width)
-           op_bad = "You can't cast a direct register.";
+           op_bad = _("You can't cast a direct register.");
 
          if (*op_bad == '\0')
            {
              /* No errors, check for warnings */
              if (width == 'q' && imreg == 12)
-               as_warn ("Using reg 14 for quadwords can tromp the FP register.");
+               as_warn (_("Using reg 14 for quadwords can tromp the FP register."));
 
              reg = imreg;
            }
@@ -1383,49 +1347,49 @@ tip_op (optex, topP)
          /* -(SP) */
          mode = TAHOE_AUTO_DEC;
          if (deferred || immediate || !really_none)
-           op_bad = "Syntax error in auto-dec mode.";
+           op_bad = _("Syntax error in auto-dec mode.");
          else if (ndx != -1)
-           op_bad = "You can't have an index auto dec mode.";
+           op_bad = _("You can't have an index auto dec mode.");
          else if (access == 'r')
-           op_bad = "Auto dec mode cant be used for reading.";
+           op_bad = _("Auto dec mode cant be used for reading.");
          else if (reg != SP_REG)
-           op_bad = "Auto dec only works of the SP register.";
+           op_bad = _("Auto dec only works of the SP register.");
          else if (access == 'b')
-           op_bad = "Auto dec can't be used in a branch.";
+           op_bad = _("Auto dec can't be used in a branch.");
          else if (width == 'q')
-           op_bad = "Auto dec won't work with quadwords.";
+           op_bad = _("Auto dec won't work with quadwords.");
 
          /* We know: imm = -1, dec_inc != '-' */
        }
       else if (dec_inc == '+')
        {
          if (immediate || !really_none)
-           op_bad = "Syntax error in one of the auto-inc modes.";
+           op_bad = _("Syntax error in one of the auto-inc modes.");
          else if (deferred)
            {
              /* *(SP)+ */
              mode = TAHOE_AUTO_INC_DEFERRED;
              if (reg != SP_REG)
-               op_bad = "Auto inc deferred only works of the SP register.";
+               op_bad = _("Auto inc deferred only works of the SP register.");
              else if (ndx != -1)
-               op_bad = "You can't have an index auto inc deferred mode.";
+               op_bad = _("You can't have an index auto inc deferred mode.");
              else if (access == 'b')
-               op_bad = "Auto inc can't be used in a branch.";
+               op_bad = _("Auto inc can't be used in a branch.");
            }
          else
            {
              /* (SP)+ */
              mode = TAHOE_AUTO_INC;
              if (access == 'm' || access == 'w')
-               op_bad = "You can't write to an auto inc register.";
+               op_bad = _("You can't write to an auto inc register.");
              else if (reg != SP_REG)
-               op_bad = "Auto inc only works of the SP register.";
+               op_bad = _("Auto inc only works of the SP register.");
              else if (access == 'b')
-               op_bad = "Auto inc can't be used in a branch.";
+               op_bad = _("Auto inc can't be used in a branch.");
              else if (width == 'q')
-               op_bad = "Auto inc won't work with quadwords.";
+               op_bad = _("Auto inc won't work with quadwords.");
              else if (ndx != -1)
-               op_bad = "You can't have an index in auto inc mode.";
+               op_bad = _("You can't have an index in auto inc mode.");
            }
 
          /* We know: imm = -1, dec_inc == ' ' */
@@ -1433,13 +1397,13 @@ tip_op (optex, topP)
       else if (reg != -1)
        {
          if ((ndx != -1) && (reg == SP_REG))
-           op_bad = "You can't index the sp register.";
+           op_bad = _("You can't index the sp register.");
          if (deferred)
            {
              /* *<disp>(Rn) */
              mode = TAHOE_REG_DISP_DEFERRED;
              if (immediate)
-               op_bad = "Syntax error in register displaced mode.";
+               op_bad = _("Syntax error in register displaced mode.");
            }
          else if (really_none)
            {
@@ -1458,7 +1422,7 @@ tip_op (optex, topP)
       else
        {
          if (really_none)
-           op_bad = "An offest is needed for this operand.";
+           op_bad = _("An offest is needed for this operand.");
          if (deferred && immediate)
            {
              /* *$<ADDR> */
@@ -1470,9 +1434,9 @@ tip_op (optex, topP)
              /* $<disp> */
              mode = TAHOE_IMMEDIATE;
              if (ndx != -1)
-               op_bad = "You can't index a register in immediate mode.";
+               op_bad = _("You can't index a register in immediate mode.");
              if (access == 'a')
-               op_bad = "Immediate access can't be used as an address.";
+               op_bad = _("Immediate access can't be used as an address.");
              /* ponder the wisdom of a cast because it doesn't do any good. */
            }
          else if (deferred)
@@ -1538,7 +1502,7 @@ tip (titP, instring)
   /* Operation-code is ended with whitespace. */
   if (p == instring)
     {
-      titP->tit_error = "No operator";
+      titP->tit_error = _("No operator");
       count = 0;
       titP->tit_opcode = 0;
     }
@@ -1555,7 +1519,7 @@ tip (titP, instring)
       *p = c;                  /* Restore char after op-code. */
       if (twP == 0)
        {
-         titP->tit_error = "Unknown operator";
+         titP->tit_error = _("Unknown operator");
          count = 0;
          titP->tit_opcode = 0;
        }
@@ -1583,7 +1547,7 @@ tip (titP, instring)
         * past any one ',' that marks the end of this operand.
         */
              if (!p[1])
-               as_fatal ("Compiler bug: ODD number of bytes in arg structure %s.",
+               as_fatal (_("Compiler bug: ODD number of bytes in arg structure %s."),
                          twP->args);
              else if (*instring)
                {
@@ -1610,7 +1574,7 @@ tip (titP, instring)
                  count++;      /*  won another argument, may have an operr */
                }
              else
-               alloperr = "Not enough operands";
+               alloperr = _("Not enough operands");
            }
          /* Restore the pointer. */
          input_line_pointer = save_input_line_pointer;
@@ -1620,7 +1584,7 @@ tip (titP, instring)
              if (*instring == ' ')
                instring++;     /* Skip whitespace. */
              if (*instring)
-               alloperr = "Too many operands";
+               alloperr = _("Too many operands");
            }
          titP->tit_error = alloperr;
        }
@@ -1671,7 +1635,7 @@ md_assemble (instruction_string)
    */
   if (*t.tit_error)
     {
-      as_warn ("Ignoring statement due to \"%s\"", t.tit_error);
+      as_warn (_("Ignoring statement due to \"%s\""), t.tit_error);
     }
   else
     {
@@ -1766,7 +1730,7 @@ md_assemble (instruction_string)
                                    opcodeP);
                          break;
                        default:
-                         as_fatal ("Compliler bug: Got a case (%d) I wasn't expecting.",
+                         as_fatal (_("Compliler bug: Got a case (%d) I wasn't expecting."),
                                    operandP->top_width);
                        }
                    }
@@ -1860,10 +1824,10 @@ md_assemble (instruction_string)
                      break;
                    case 'b':
                    case 'w':
-                     as_warn ("Real branch displacements must be expressions.");
+                     as_warn (_("Real branch displacements must be expressions."));
                      break;
                    default:
-                     as_fatal ("Complier error: I got an unknown synthetic branch :%c",
+                     as_fatal (_("Complier error: I got an unknown synthetic branch :%c"),
                                operandP->top_width);
                      break;
                    }
@@ -2004,7 +1968,7 @@ md_assemble (instruction_string)
                    }
                  break;
                default:
-                 as_fatal ("Barf, bad mode %x\n", operandP->top_mode);
+                 as_fatal (_("Barf, bad mode %x\n"), operandP->top_mode);
                }
            }
        }                       /* for(operandP) */
@@ -2022,17 +1986,6 @@ md_undefined_symbol (name)
   return 0;
 }                              /* md_undefined_symbol() */
 
-/* Parse an operand that is machine-specific.
-   We just return without modifying the expression if we have nothing
-   to do. */
-
-/* ARGSUSED */
-void 
-md_operand (expressionP)
-     expressionS *expressionP;
-{
-}                              /* md_operand() */
-
 /* Round up a section size to the appropriate boundary. */
 valueT
 md_section_align (segment, size)
This page took 0.069018 seconds and 4 git commands to generate.