* remote.c (struct packet_reg): Declare.
[deliverable/binutils-gdb.git] / gas / config / tc-hppa.c
index 1b3a4efc850456c5c25b4d15910d231fa044c0dc..5bdd25ef323c7fabc1b46e753b161c683f4da188 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-hppa.c -- Assemble for the PA
-   Copyright 1989, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
+   Copyright 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
    Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
@@ -23,9 +23,9 @@
    at the University of Utah.  */
 
 #include <stdio.h>
-#include <ctype.h>
 
 #include "as.h"
+#include "safe-ctype.h"
 #include "subsegs.h"
 
 #include "bfd/libhppa.h"
@@ -105,6 +105,12 @@ typedef som_symbol_type obj_symbol_type;
 #endif
 #endif /* OBJ_SOM */
 
+#if TARGET_ARCH_SIZE == 64
+#define DEFAULT_LEVEL 25
+#else
+#define DEFAULT_LEVEL 10
+#endif
+
 /* Various structures and types used internally in tc-hppa.c.  */
 
 /* Unwind table and descriptor.  FIXME: Sync this with GDB version.  */
@@ -502,10 +508,10 @@ static int evaluate_absolute PARAMS ((struct pa_it *));
 static unsigned int pa_build_arg_reloc PARAMS ((char *));
 static unsigned int pa_align_arg_reloc PARAMS ((unsigned int, unsigned int));
 static int pa_parse_nullif PARAMS ((char **));
-static int pa_parse_nonneg_cmpsub_cmpltr PARAMS ((char **, int));
-static int pa_parse_neg_cmpsub_cmpltr PARAMS ((char **, int));
-static int pa_parse_neg_add_cmpltr PARAMS ((char **, int));
-static int pa_parse_nonneg_add_cmpltr PARAMS ((char **, int));
+static int pa_parse_nonneg_cmpsub_cmpltr PARAMS ((char **));
+static int pa_parse_neg_cmpsub_cmpltr PARAMS ((char **));
+static int pa_parse_neg_add_cmpltr PARAMS ((char **));
+static int pa_parse_nonneg_add_cmpltr PARAMS ((char **));
 static int pa_parse_cmpb_64_cmpltr PARAMS ((char **));
 static int pa_parse_cmpib_64_cmpltr PARAMS ((char **));
 static int pa_parse_addb_64_cmpltr PARAMS ((char **));
@@ -948,6 +954,11 @@ static const struct pd_reg pre_defined_registers[] =
   {"%isr",   20},
   {"%itmr",  16},
   {"%iva",   14},
+#if TARGET_ARCH_SIZE == 64
+  {"%mrp",    2},
+#else
+  {"%mrp",   31},
+#endif
   {"%pcoq",  18},
   {"%pcsq",  17},
   {"%pidr1",  8},
@@ -1147,6 +1158,20 @@ static struct default_space_dict pa_def_spaces[] =
       } \
   }
 
+/* Variant of CHECK_FIELD for use in md_apply_fix and other places where
+   the current file and line number are not valid.  */
+
+#define CHECK_FIELD_WHERE(FIELD, HIGH, LOW, FILENAME, LINE) \
+  { \
+    if ((FIELD) > (HIGH) || (FIELD) < (LOW)) \
+      { \
+        as_bad_where ((FILENAME), (LINE), \
+                     _("Field out of range [%d..%d] (%d)."), (LOW), (HIGH), \
+                     (int) (FIELD));\
+        break; \
+      } \
+  }
+
 /* Simple alignment checking for FIELD againt ALIGN (a power of two).
    IGNORE is used to suppress the error message.  */
 
@@ -1393,7 +1418,7 @@ md_begin ()
   call_info_root = NULL;
 
   /* Set the default machine type.  */
-  if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, 10))
+  if (!bfd_set_arch_mach (stdoutput, bfd_arch_hppa, DEFAULT_LEVEL))
     as_warn (_("could not set architecture and machine"));
 
   /* Folding of text and data segments fails miserably on the PA.
@@ -1546,11 +1571,12 @@ pa_ip (str)
   /* Convert everything up to the first whitespace character into lower
      case.  */
   for (s = str; *s != ' ' && *s != '\t' && *s != '\n' && *s != '\0'; s++)
-    if (isupper (*s))
-      *s = tolower (*s);
+    *s = TOLOWER (*s);
 
   /* Skip to something interesting.  */
-  for (s = str; isupper (*s) || islower (*s) || (*s >= '0' && *s <= '3'); ++s)
+  for (s = str;
+       ISUPPER (*s) || ISLOWER (*s) || (*s >= '0' && *s <= '3');
+       ++s)
     ;
 
   switch (*s)
@@ -1572,8 +1598,6 @@ pa_ip (str)
       as_fatal (_("Unknown opcode: `%s'"), str);
     }
 
-  save_s = str;
-
   /* Look up the opcode in the has table.  */
   if ((insn = (struct pa_opcode *) hash_find (op_hash, str)) == NULL)
     {
@@ -1666,12 +1690,12 @@ pa_ip (str)
              while (*s == ' ' || *s == '\t')
                s = s + 1;
 
-             if (!strncasecmp(s, "%sar", 4))
+             if (!strncasecmp (s, "%sar", 4))
                {
                  s += 4;
                  continue;
                }
-             else if (!strncasecmp(s, "%cr11", 5))
+             else if (!strncasecmp (s, "%cr11", 5))
                {
                  s += 5;
                  continue;
@@ -1926,7 +1950,7 @@ pa_ip (str)
                /* Handle load cache hint completer.  */
                case 'c':
                  cmpltr = 0;
-                 if (!strncmp(s, ",sl", 3))
+                 if (!strncmp (s, ",sl", 3))
                    {
                      s += 3;
                      cmpltr = 2;
@@ -1936,12 +1960,12 @@ pa_ip (str)
                /* Handle store cache hint completer.  */
                case 'C':
                  cmpltr = 0;
-                 if (!strncmp(s, ",sl", 3))
+                 if (!strncmp (s, ",sl", 3))
                    {
                      s += 3;
                      cmpltr = 2;
                    }
-                 else if (!strncmp(s, ",bc", 3))
+                 else if (!strncmp (s, ",bc", 3))
                    {
                      s += 3;
                      cmpltr = 1;
@@ -1951,7 +1975,7 @@ pa_ip (str)
                /* Handle load and clear cache hint completer.  */
                case 'd':
                  cmpltr = 0;
-                 if (!strncmp(s, ",co", 3))
+                 if (!strncmp (s, ",co", 3))
                    {
                      s += 3;
                      cmpltr = 1;
@@ -1960,7 +1984,7 @@ pa_ip (str)
 
                /* Handle load ordering completer.  */
                case 'o':
-                 if (strncmp(s, ",o", 2) != 0)
+                 if (strncmp (s, ",o", 2) != 0)
                    break;
                  s += 2;
                  continue;
@@ -2229,13 +2253,13 @@ pa_ip (str)
                      else if (*s == 'l')
                        lr = 0;
                      else
-                       as_bad(_("Invalid left/right combination completer"));
+                       as_bad (_("Invalid left/right combination completer"));
 
                      s++;
                      INSERT_FIELD_AND_CONTINUE (opcode, lr, 13);
                    }
                  else
-                   as_bad(_("Invalid left/right combination completer"));
+                   as_bad (_("Invalid left/right combination completer"));
                  break;
 
                /* Handle saturation at 24:25.  */
@@ -2284,14 +2308,14 @@ pa_ip (str)
                              perm = 3;
                              break;
                            default:
-                             as_bad(_("Invalid permutation completer"));
+                             as_bad (_("Invalid permutation completer"));
                            }
                          opcode |= perm << permloc[i];
                        }
                      continue;
                    }
                  else
-                   as_bad(_("Invalid permutation completer"));
+                   as_bad (_("Invalid permutation completer"));
                  break;
 
                default:
@@ -2400,10 +2424,10 @@ pa_ip (str)
 
                  /* Handle non-negated add and branch condition.  */
                  case 'd':
-                   cmpltr = pa_parse_nonneg_add_cmpltr (&s, 1);
+                   cmpltr = pa_parse_nonneg_add_cmpltr (&s);
                    if (cmpltr < 0)
                      {
-                       as_bad (_("Invalid Add and Branch Condition: %c"), *s);
+                       as_bad (_("Invalid Add and Branch Condition"));
                        cmpltr = 0;
                      }
                    INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
@@ -2413,7 +2437,7 @@ pa_ip (str)
                    cmpltr = pa_parse_addb_64_cmpltr (&s);
                    if (cmpltr < 0)
                      {
-                       as_bad (_("Invalid Add and Branch Condition: %c"), *s);
+                       as_bad (_("Invalid Add and Branch Condition"));
                        cmpltr = 0;
                      }
                    else
@@ -2427,11 +2451,11 @@ pa_ip (str)
                     condition.  */
                  case '@':
                    save_s = s;
-                   cmpltr = pa_parse_nonneg_add_cmpltr (&s, 1);
+                   cmpltr = pa_parse_nonneg_add_cmpltr (&s);
                    if (cmpltr < 0)
                      {
                        s = save_s;
-                       cmpltr = pa_parse_neg_add_cmpltr (&s, 1);
+                       cmpltr = pa_parse_neg_add_cmpltr (&s);
                        if (cmpltr < 0)
                          {
                            as_bad (_("Invalid Compare/Subtract Condition"));
@@ -2569,10 +2593,10 @@ pa_ip (str)
 
                  /* Handle a non-negated compare condition.  */
                  case 't':
-                   cmpltr = pa_parse_nonneg_cmpsub_cmpltr (&s, 1);
+                   cmpltr = pa_parse_nonneg_cmpsub_cmpltr (&s);
                    if (cmpltr < 0)
                      {
-                       as_bad (_("Invalid Compare/Subtract Condition: %c"), *s);
+                       as_bad (_("Invalid Compare/Subtract Condition"));
                        cmpltr = 0;
                      }
                    INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
@@ -2580,14 +2604,14 @@ pa_ip (str)
                  /* Handle a 32 bit compare and branch condition.  */
                  case 'n':
                    save_s = s;
-                   cmpltr = pa_parse_nonneg_cmpsub_cmpltr (&s, 1);
+                   cmpltr = pa_parse_nonneg_cmpsub_cmpltr (&s);
                    if (cmpltr < 0)
                      {
                        s = save_s;
-                       cmpltr = pa_parse_neg_cmpsub_cmpltr (&s, 1);
+                       cmpltr = pa_parse_neg_cmpsub_cmpltr (&s);
                        if (cmpltr < 0)
                          {
-                           as_bad (_("Invalid Compare and Branch Condition."));
+                           as_bad (_("Invalid Compare and Branch Condition"));
                            cmpltr = 0;
                          }
                        else
@@ -4049,7 +4073,7 @@ tc_gen_reloc (section, fixp)
 
   if (codes == NULL)
     {
-      as_bad (_("Cannot handle fixup at %s:%d"), fixp->fx_file, fixp->fx_line);
+      as_bad_where (fixp->fx_file, fixp->fx_line, _("Cannot handle fixup"));
       abort ();
     }
 
@@ -4420,8 +4444,9 @@ md_apply_fix (fixP, valp)
   hppa_fixP = (struct hppa_fix_struct *) fixP->tc_fix_data;
   if (hppa_fixP == NULL)
     {
-      printf (_("no hppa_fixup entry for fixup type 0x%x at %s:%d"),
-             fixP->fx_r_type, fixP->fx_file, fixP->fx_line);
+      as_bad_where (fixP->fx_file, fixP->fx_line,
+                   _("no hppa_fixup entry for fixup type 0x%x"),
+                   fixP->fx_r_type);
       return 0;
     }
 
@@ -4487,14 +4512,16 @@ md_apply_fix (fixP, valp)
   switch (fmt)
     {
     case 10:
-      CHECK_FIELD (new_val, 8191, -8192, 0);
+      CHECK_FIELD_WHERE (new_val, 8191, -8192,
+                        fixP->fx_file, fixP->fx_line);
       val = new_val;
 
       insn = (insn & ~ 0x3ff1) | (((val & 0x1ff8) << 1)
                                  | ((val & 0x2000) >> 13));
       break;
     case -11:
-      CHECK_FIELD (new_val, 8191, -8192, 0);
+      CHECK_FIELD_WHERE (new_val, 8191, -8192,
+                        fixP->fx_file, fixP->fx_line);
       val = new_val;
 
       insn = (insn & ~ 0x3ff9) | (((val & 0x1ffc) << 1)
@@ -4502,7 +4529,8 @@ md_apply_fix (fixP, valp)
       break;
       /* Handle all opcodes with the 'j' operand type.  */
     case 14:
-      CHECK_FIELD (new_val, 8191, -8192, 0);
+      CHECK_FIELD_WHERE (new_val, 8191, -8192,
+                        fixP->fx_file, fixP->fx_line);
       val = new_val;
 
       insn = ((insn & ~ 0x3fff) | low_sign_unext (val, 14));
@@ -4510,7 +4538,8 @@ md_apply_fix (fixP, valp)
 
       /* Handle all opcodes with the 'k' operand type.  */
     case 21:
-      CHECK_FIELD (new_val, 1048575, -1048576, 0);
+      CHECK_FIELD_WHERE (new_val, 1048575, -1048576,
+                        fixP->fx_file, fixP->fx_line);
       val = new_val;
 
       insn = (insn & ~ 0x1fffff) | re_assemble_21 (val);
@@ -4518,7 +4547,8 @@ md_apply_fix (fixP, valp)
 
       /* Handle all the opcodes with the 'i' operand type.  */
     case 11:
-      CHECK_FIELD (new_val, 1023, -1024, 0);
+      CHECK_FIELD_WHERE (new_val, 1023, -1024,
+                        fixP->fx_file, fixP->fx_line);
       val = new_val;
 
       insn = (insn & ~ 0x7ff) | low_sign_unext (val, 11);
@@ -4526,7 +4556,8 @@ md_apply_fix (fixP, valp)
 
       /* Handle all the opcodes with the 'w' operand type.  */
     case 12:
-      CHECK_FIELD (new_val - 8, 8191, -8192, 0);
+      CHECK_FIELD_WHERE (new_val - 8, 8191, -8192,
+                        fixP->fx_file, fixP->fx_line);
       val = new_val - 8;
 
       insn = (insn & ~ 0x1ffd) | re_assemble_12 (val >> 2);
@@ -4541,9 +4572,11 @@ md_apply_fix (fixP, valp)
           range target, then we want to complain.  */
        if (fixP->fx_r_type == (int) R_HPPA_PCREL_CALL
            && (insn & 0xffe00000) == 0xe8000000)
-         CHECK_FIELD (distance - 8, 262143, -262144, 0);
+         CHECK_FIELD_WHERE (distance - 8, 262143, -262144,
+                            fixP->fx_file, fixP->fx_line);
 
-       CHECK_FIELD (new_val - 8, 262143, -262144, 0);
+       CHECK_FIELD_WHERE (new_val - 8, 262143, -262144,
+                          fixP->fx_file, fixP->fx_line);
        val = new_val - 8;
 
        insn = (insn & ~ 0x1f1ffd) | re_assemble_17 (val >> 2);
@@ -4558,9 +4591,11 @@ md_apply_fix (fixP, valp)
           range target, then we want to complain.  */
        if (fixP->fx_r_type == (int) R_HPPA_PCREL_CALL
            && (insn & 0xffe00000) == 0xe8000000)
-         CHECK_FIELD (distance - 8, 8388607, -8388608, 0);
+         CHECK_FIELD_WHERE (distance - 8, 8388607, -8388608,
+                            fixP->fx_file, fixP->fx_line);
 
-       CHECK_FIELD (new_val - 8, 8388607, -8388608, 0);
+       CHECK_FIELD_WHERE (new_val - 8, 8388607, -8388608,
+                          fixP->fx_file, fixP->fx_line);
        val = new_val - 8;
 
        insn = (insn & ~ 0x3ff1ffd) | re_assemble_22 (val >> 2);
@@ -4587,7 +4622,8 @@ md_apply_fix (fixP, valp)
       break;
 
     default:
-      as_bad (_("Unknown relocation encountered in md_apply_fix."));
+      as_bad_where (fixP->fx_file, fixP->fx_line,
+                   _("Unknown relocation encountered in md_apply_fix."));
       return 0;
     }
 
@@ -4652,7 +4688,7 @@ pa_parse_number (s, is_float)
   pa_number = -1;
   have_prefix = 0;
   num = 0;
-  if (!strict && isdigit (*p))
+  if (!strict && ISDIGIT (*p))
     {
       /* Looks like a number.  */
 
@@ -4660,10 +4696,10 @@ pa_parse_number (s, is_float)
        {
          /* The number is specified in hex.  */
          p += 2;
-         while (isdigit (*p) || ((*p >= 'a') && (*p <= 'f'))
+         while (ISDIGIT (*p) || ((*p >= 'a') && (*p <= 'f'))
                 || ((*p >= 'A') && (*p <= 'F')))
            {
-             if (isdigit (*p))
+             if (ISDIGIT (*p))
                num = num * 16 + *p - '0';
              else if (*p >= 'a' && *p <= 'f')
                num = num * 16 + *p - 'a' + 10;
@@ -4675,7 +4711,7 @@ pa_parse_number (s, is_float)
       else
        {
          /* The number is specified in decimal.  */
-         while (isdigit (*p))
+         while (ISDIGIT (*p))
            {
              num = num * 10 + *p - '0';
              ++p;
@@ -4727,7 +4763,7 @@ pa_parse_number (s, is_float)
              num = 2;
              p++;
            }
-         else if (!isdigit (*p))
+         else if (!ISDIGIT (*p))
            {
              if (print_errors)
                as_bad (_("Undefined register: '%s'."), name);
@@ -4737,7 +4773,7 @@ pa_parse_number (s, is_float)
            {
              do
                num = num * 10 + *p++ - '0';
-             while (isdigit (*p));
+             while (ISDIGIT (*p));
            }
        }
       else
@@ -5089,16 +5125,16 @@ pa_chk_field_selector (str)
     *str = *str + 1;
 
   if ((*str)[1] == '\'' || (*str)[1] == '%')
-    name[0] = tolower ((*str)[0]),
+    name[0] = TOLOWER ((*str)[0]),
     name[1] = 0;
   else if ((*str)[2] == '\'' || (*str)[2] == '%')
-    name[0] = tolower ((*str)[0]),
-    name[1] = tolower ((*str)[1]),
+    name[0] = TOLOWER ((*str)[0]),
+    name[1] = TOLOWER ((*str)[1]),
     name[2] = 0;
   else if ((*str)[3] == '\'' || (*str)[3] == '%')
-    name[0] = tolower ((*str)[0]),
-    name[1] = tolower ((*str)[1]),
-    name[2] = tolower ((*str)[2]),
+    name[0] = TOLOWER ((*str)[0]),
+    name[1] = TOLOWER ((*str)[1]),
+    name[2] = TOLOWER ((*str)[2]),
     name[3] = 0;
   else
     return e_fsel;
@@ -5311,16 +5347,11 @@ pa_parse_nullif (s)
 }
 
 /* Parse a non-negated compare/subtract completer returning the
-   number (for encoding in instrutions) of the given completer.
-
-   ISBRANCH specifies whether or not this is parsing a condition
-   completer for a branch (vs a nullification completer for a
-   computational instruction.  */
+   number (for encoding in instrutions) of the given completer.  */
 
 static int
-pa_parse_nonneg_cmpsub_cmpltr (s, isbranch)
+pa_parse_nonneg_cmpsub_cmpltr (s)
      char **s;
-     int isbranch;
 {
   int cmpltr;
   char *name = *s + 1;
@@ -5367,7 +5398,7 @@ pa_parse_nonneg_cmpsub_cmpltr (s, isbranch)
        }
       /* If we have something like addb,n then there is no condition
          completer.  */
-      else if (strcasecmp (name, "n") == 0 && isbranch)
+      else if (strcasecmp (name, "n") == 0)
        {
          cmpltr = 0;
          nullify = 1;
@@ -5387,16 +5418,11 @@ pa_parse_nonneg_cmpsub_cmpltr (s, isbranch)
 }
 
 /* Parse a negated compare/subtract completer returning the
-   number (for encoding in instrutions) of the given completer.
-
-   ISBRANCH specifies whether or not this is parsing a condition
-   completer for a branch (vs a nullification completer for a
-   computational instruction.  */
+   number (for encoding in instrutions) of the given completer.  */
 
 static int
-pa_parse_neg_cmpsub_cmpltr (s, isbranch)
+pa_parse_neg_cmpsub_cmpltr (s)
      char **s;
-     int isbranch;
 {
   int cmpltr;
   char *name = *s + 1;
@@ -5447,7 +5473,7 @@ pa_parse_neg_cmpsub_cmpltr (s, isbranch)
        }
       /* If we have something like addb,n then there is no condition
          completer.  */
-      else if (strcasecmp (name, "n") == 0 && isbranch)
+      else if (strcasecmp (name, "n") == 0)
        {
          cmpltr = 0;
          nullify = 1;
@@ -5626,21 +5652,17 @@ pa_parse_cmpib_64_cmpltr (s)
 }
 
 /* Parse a non-negated addition completer returning the number
-   (for encoding in instrutions) of the given completer.
-
-   ISBRANCH specifies whether or not this is parsing a condition
-   completer for a branch (vs a nullification completer for a
-   computational instruction.  */
+   (for encoding in instrutions) of the given completer.  */
 
 static int
-pa_parse_nonneg_add_cmpltr (s, isbranch)
+pa_parse_nonneg_add_cmpltr (s)
      char **s;
-     int isbranch;
 {
   int cmpltr;
   char *name = *s + 1;
   char c;
   char *save_s = *s;
+  int nullify = 0;
 
   cmpltr = 0;
   if (**s == ',')
@@ -5680,9 +5702,10 @@ pa_parse_nonneg_add_cmpltr (s, isbranch)
        }
       /* If we have something like addb,n then there is no condition
          completer.  */
-      else if (strcasecmp (name, "n") == 0 && isbranch)
+      else if (strcasecmp (name, "n") == 0)
        {
          cmpltr = 0;
+         nullify = 1;
        }
       else
        {
@@ -5692,28 +5715,24 @@ pa_parse_nonneg_add_cmpltr (s, isbranch)
     }
 
   /* Reset pointers if this was really a ,n for a branch instruction.  */
-  if (cmpltr == 0 && *name == 'n' && isbranch)
+  if (nullify)
     *s = save_s;
 
   return cmpltr;
 }
 
 /* Parse a negated addition completer returning the number
-   (for encoding in instrutions) of the given completer.
-
-   ISBRANCH specifies whether or not this is parsing a condition
-   completer for a branch (vs a nullification completer for a
-   computational instruction).  */
+   (for encoding in instrutions) of the given completer.  */
 
 static int
-pa_parse_neg_add_cmpltr (s, isbranch)
+pa_parse_neg_add_cmpltr (s)
      char **s;
-     int isbranch;
 {
   int cmpltr;
   char *name = *s + 1;
   char c;
   char *save_s = *s;
+  int nullify = 0;
 
   cmpltr = 0;
   if (**s == ',')
@@ -5757,9 +5776,10 @@ pa_parse_neg_add_cmpltr (s, isbranch)
        }
       /* If we have something like addb,n then there is no condition
          completer.  */
-      else if (strcasecmp (name, "n") == 0 && isbranch)
+      else if (strcasecmp (name, "n") == 0)
        {
          cmpltr = 0;
+         nullify = 1;
        }
       else
        {
@@ -5769,7 +5789,7 @@ pa_parse_neg_add_cmpltr (s, isbranch)
     }
 
   /* Reset pointers if this was really a ,n for a branch instruction.  */
-  if (cmpltr == 0 && *name == 'n' && isbranch)
+  if (nullify)
     *s = save_s;
 
   return cmpltr;
@@ -6108,9 +6128,9 @@ pa_build_unwind_subspace (call_info)
   /* Get some space to hold relocation information for the unwind
      descriptor.  */
   p = frag_more (16);
-  md_number_to_chars (p, 0, 8);
 
   /* Relocation info. for start offset of the function.  */
+  md_number_to_chars (p, 0, 4);
   fix_new_hppa (frag_now, p - frag_now->fr_literal, 4,
                call_info->start_symbol, (offsetT) 0,
                (expressionS *) NULL, 0, reloc,
@@ -6123,7 +6143,7 @@ pa_build_unwind_subspace (call_info)
      symbol into the symbol table.  It (should) end up giving the same
      value as call_info->start_symbol + function size once the linker is
      finished with its work.  */
-
+  md_number_to_chars (p + 4, 0, 4);
   fix_new_hppa (frag_now, p + 4 - frag_now->fr_literal, 4,
                call_info->end_symbol, (offsetT) 0,
                (expressionS *) NULL, 0, reloc,
@@ -6807,7 +6827,7 @@ pa_import (unused)
        {
          /* Sigh.  To be compatable with the HP assembler and to help
             poorly written assembly code, we assign a type based on
-            the the current segment.  Note only BSF_FUNCTION really
+            the current segment.  Note only BSF_FUNCTION really
             matters, we do not need to set the full SYMBOL_TYPE_* info.  */
          if (now_seg == text_section)
            symbol_get_bfdsym (symbol)->flags |= BSF_FUNCTION;
@@ -8177,11 +8197,11 @@ pa_stringer (append_zero)
                s++;
                for (num_digit = 0, number = 0, dg = *s;
                     num_digit < 2
-                    && (isdigit (dg) || (dg >= 'a' && dg <= 'f')
+                    && (ISDIGIT (dg) || (dg >= 'a' && dg <= 'f')
                         || (dg >= 'A' && dg <= 'F'));
                     num_digit++)
                  {
-                   if (isdigit (dg))
+                   if (ISDIGIT (dg))
                      number = number * 16 + dg - '0';
                    else if (dg >= 'a' && dg <= 'f')
                      number = number * 16 + dg - 'a' + 10;
@@ -8474,7 +8494,7 @@ hppa_force_relocation (fixp)
     return 1;
 
   /* It is necessary to force PC-relative calls/jumps to have a relocation
-     entry if they're going to need either a argument relocation or long
+     entry if they're going to need either an argument relocation or long
      call stub.  */
   if (fixp->fx_pcrel
       && arg_reloc_stub_needed (symbol_arg_reloc_info (fixp->fx_addsy),
This page took 0.034989 seconds and 4 git commands to generate.