* elf32-xtensa.c (ebb_propose_action): Fix argument order.
[deliverable/binutils-gdb.git] / gdb / valprint.c
index 84cd2724175217a5f05bc7f39077376077de5ddc..fd92750b8c62ca19517b81febc7cf1784ced20d6 100644 (file)
@@ -1,7 +1,8 @@
 /* Print values for GDB, the GNU debugger.
-   Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
-   1997, 1998, 1999, 2000, 2001
-   Free Software Foundation, Inc.
+
+   Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+   1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation,
+   Inc.
 
    This file is part of GDB.
 
@@ -28,7 +29,6 @@
 #include "gdbcore.h"
 #include "gdbcmd.h"
 #include "target.h"
-#include "obstack.h"
 #include "language.h"
 #include "annotate.h"
 #include "valprint.h"
@@ -42,9 +42,6 @@
 static int partial_memory_read (CORE_ADDR memaddr, char *myaddr,
                                int len, int *errnoptr);
 
-static void print_hex_chars (struct ui_file *, unsigned char *,
-                            unsigned int);
-
 static void show_print (char *, int);
 
 static void set_print (char *, int);
@@ -205,317 +202,60 @@ val_print_type_code_int (struct type *type, char *valaddr,
     }
   else
     {
-#ifdef PRINT_TYPELESS_INTEGER
-      PRINT_TYPELESS_INTEGER (stream, type, unpack_long (type, valaddr));
-#else
       print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0,
                     unpack_long (type, valaddr));
-#endif
     }
 }
 
 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
    The raison d'etre of this function is to consolidate printing of 
-   LONG_LONG's into this one function.  Some platforms have long longs but
-   don't have a printf() that supports "ll" in the format string.  We handle
-   these by seeing if the number is representable as either a signed or
-   unsigned long, depending upon what format is desired, and if not we just
-   bail out and print the number in hex.
-
-   The format chars b,h,w,g are from print_scalar_formatted().  If USE_LOCAL,
-   format it according to the current language (this should be used for most
-   integers which GDB prints, the exception is things like protocols where
-   the format of the integer is a protocol thing, not a user-visible thing).
- */
-
-#if defined (CC_HAS_LONG_LONG) && !defined (PRINTF_HAS_LONG_LONG)
-static void print_decimal (struct ui_file * stream, char *sign,
-                          int use_local, ULONGEST val_ulong);
-static void
-print_decimal (struct ui_file *stream, char *sign, int use_local,
-              ULONGEST val_ulong)
-{
-  unsigned long temp[3];
-  int i = 0;
-  do
-    {
-      temp[i] = val_ulong % (1000 * 1000 * 1000);
-      val_ulong /= (1000 * 1000 * 1000);
-      i++;
-    }
-  while (val_ulong != 0 && i < (sizeof (temp) / sizeof (temp[0])));
-  switch (i)
-    {
-    case 1:
-      fprintf_filtered (stream, "%s%lu",
-                       sign, temp[0]);
-      break;
-    case 2:
-      fprintf_filtered (stream, "%s%lu%09lu",
-                       sign, temp[1], temp[0]);
-      break;
-    case 3:
-      fprintf_filtered (stream, "%s%lu%09lu%09lu",
-                       sign, temp[2], temp[1], temp[0]);
-      break;
-    default:
-      internal_error (__FILE__, __LINE__, "failed internal consistency check");
-    }
-  return;
-}
-#endif
+   LONG_LONG's into this one function. The format chars b,h,w,g are 
+   from print_scalar_formatted().  Numbers are printed using C
+   format. 
+
+   USE_C_FORMAT means to use C format in all cases.  Without it, 
+   'o' and 'x' format do not include the standard C radix prefix
+   (leading 0 or 0x). 
+   
+   Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
+   and was intended to request formating according to the current
+   language and would be used for most integers that GDB prints.  The
+   exceptional cases were things like protocols where the format of
+   the integer is a protocol thing, not a user-visible thing).  The
+   parameter remains to preserve the information of what things might
+   be printed with language-specific format, should we ever resurrect
+   that capability. */
 
 void
-print_longest (struct ui_file *stream, int format, int use_local,
+print_longest (struct ui_file *stream, int format, int use_c_format,
               LONGEST val_long)
 {
-#if defined (CC_HAS_LONG_LONG) && !defined (PRINTF_HAS_LONG_LONG)
-  if (sizeof (long) < sizeof (LONGEST))
-    {
-      switch (format)
-       {
-       case 'd':
-         {
-           /* Print a signed value, that doesn't fit in a long */
-           if ((long) val_long != val_long)
-             {
-               if (val_long < 0)
-                 print_decimal (stream, "-", use_local, -val_long);
-               else
-                 print_decimal (stream, "", use_local, val_long);
-               return;
-             }
-           break;
-         }
-       case 'u':
-         {
-           /* Print an unsigned value, that doesn't fit in a long */
-           if ((unsigned long) val_long != (ULONGEST) val_long)
-             {
-               print_decimal (stream, "", use_local, val_long);
-               return;
-             }
-           break;
-         }
-       case 'x':
-       case 'o':
-       case 'b':
-       case 'h':
-       case 'w':
-       case 'g':
-         /* Print as unsigned value, must fit completely in unsigned long */
-         {
-           unsigned long temp = val_long;
-           if (temp != val_long)
-             {
-               /* Urk, can't represent value in long so print in hex.
-                  Do shift in two operations so that if sizeof (long)
-                  == sizeof (LONGEST) we can avoid warnings from
-                  picky compilers about shifts >= the size of the
-                  shiftee in bits */
-               unsigned long vbot = (unsigned long) val_long;
-               LONGEST temp = (val_long >> (sizeof (long) * HOST_CHAR_BIT - 1));
-               unsigned long vtop = temp >> 1;
-               fprintf_filtered (stream, "0x%lx%08lx", vtop, vbot);
-               return;
-             }
-           break;
-         }
-       }
-    }
-#endif
-
-#if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
-  switch (format)
-    {
-    case 'd':
-      fprintf_filtered (stream,
-                       use_local ? local_decimal_format_custom ("ll")
-                       : "%lld",
-                       val_long);
-      break;
-    case 'u':
-      fprintf_filtered (stream, "%llu", val_long);
-      break;
-    case 'x':
-      fprintf_filtered (stream,
-                       use_local ? local_hex_format_custom ("ll")
-                       : "%llx",
-                       val_long);
-      break;
-    case 'o':
-      fprintf_filtered (stream,
-                       use_local ? local_octal_format_custom ("ll")
-                       : "%llo",
-                       val_long);
-      break;
-    case 'b':
-      fprintf_filtered (stream, local_hex_format_custom ("02ll"), val_long);
-      break;
-    case 'h':
-      fprintf_filtered (stream, local_hex_format_custom ("04ll"), val_long);
-      break;
-    case 'w':
-      fprintf_filtered (stream, local_hex_format_custom ("08ll"), val_long);
-      break;
-    case 'g':
-      fprintf_filtered (stream, local_hex_format_custom ("016ll"), val_long);
-      break;
-    default:
-      internal_error (__FILE__, __LINE__, "failed internal consistency check");
-    }
-#else /* !CC_HAS_LONG_LONG || !PRINTF_HAS_LONG_LONG */
-  /* In the following it is important to coerce (val_long) to a long. It does
-     nothing if !LONG_LONG, but it will chop off the top half (which we know
-     we can ignore) if the host supports long longs.  */
-
-  switch (format)
-    {
-    case 'd':
-      fprintf_filtered (stream,
-                       use_local ? local_decimal_format_custom ("l")
-                       : "%ld",
-                       (long) val_long);
-      break;
-    case 'u':
-      fprintf_filtered (stream, "%lu", (unsigned long) val_long);
-      break;
-    case 'x':
-      fprintf_filtered (stream,
-                       use_local ? local_hex_format_custom ("l")
-                       : "%lx",
-                       (unsigned long) val_long);
-      break;
-    case 'o':
-      fprintf_filtered (stream,
-                       use_local ? local_octal_format_custom ("l")
-                       : "%lo",
-                       (unsigned long) val_long);
-      break;
-    case 'b':
-      fprintf_filtered (stream, local_hex_format_custom ("02l"),
-                       (unsigned long) val_long);
-      break;
-    case 'h':
-      fprintf_filtered (stream, local_hex_format_custom ("04l"),
-                       (unsigned long) val_long);
-      break;
-    case 'w':
-      fprintf_filtered (stream, local_hex_format_custom ("08l"),
-                       (unsigned long) val_long);
-      break;
-    case 'g':
-      fprintf_filtered (stream, local_hex_format_custom ("016l"),
-                       (unsigned long) val_long);
-      break;
-    default:
-      internal_error (__FILE__, __LINE__, "failed internal consistency check");
-    }
-#endif /* CC_HAS_LONG_LONG || PRINTF_HAS_LONG_LONG */
-}
-
-#if 0
-void
-strcat_longest (int format, int use_local, LONGEST val_long, char *buf,
-               int buflen)
-{
-/* FIXME: Use buflen to avoid buffer overflow.  */
-#if defined (CC_HAS_LONG_LONG) && !defined (PRINTF_HAS_LONG_LONG)
-  long vtop, vbot;
+  const char *val;
 
-  vtop = val_long >> (sizeof (long) * HOST_CHAR_BIT);
-  vbot = (long) val_long;
-
-  if ((format == 'd' && (val_long < INT_MIN || val_long > INT_MAX))
-      || ((format == 'u' || format == 'x') && (unsigned long long) val_long > UINT_MAX))
-    {
-      sprintf (buf, "0x%lx%08lx", vtop, vbot);
-      return;
-    }
-#endif
-
-#ifdef PRINTF_HAS_LONG_LONG
   switch (format)
     {
     case 'd':
-      sprintf (buf,
-              (use_local ? local_decimal_format_custom ("ll") : "%lld"),
-              val_long);
-      break;
+      val = int_string (val_long, 10, 1, 0, 1); break;
     case 'u':
-      sprintf (buf, "%llu", val_long);
-      break;
+      val = int_string (val_long, 10, 0, 0, 1); break;
     case 'x':
-      sprintf (buf,
-              (use_local ? local_hex_format_custom ("ll") : "%llx"),
-
-              val_long);
-      break;
-    case 'o':
-      sprintf (buf,
-              (use_local ? local_octal_format_custom ("ll") : "%llo"),
-              val_long);
-      break;
+      val = int_string (val_long, 16, 0, 0, use_c_format); break;
     case 'b':
-      sprintf (buf, local_hex_format_custom ("02ll"), val_long);
-      break;
+      val = int_string (val_long, 16, 0, 2, 1); break;
     case 'h':
-      sprintf (buf, local_hex_format_custom ("04ll"), val_long);
-      break;
+      val = int_string (val_long, 16, 0, 4, 1); break;
     case 'w':
-      sprintf (buf, local_hex_format_custom ("08ll"), val_long);
-      break;
+      val = int_string (val_long, 16, 0, 8, 1); break;
     case 'g':
-      sprintf (buf, local_hex_format_custom ("016ll"), val_long);
-      break;
-    default:
-      internal_error (__FILE__, __LINE__, "failed internal consistency check");
-    }
-#else /* !PRINTF_HAS_LONG_LONG */
-  /* In the following it is important to coerce (val_long) to a long. It does
-     nothing if !LONG_LONG, but it will chop off the top half (which we know
-     we can ignore) if the host supports long longs.  */
-
-  switch (format)
-    {
-    case 'd':
-      sprintf (buf, (use_local ? local_decimal_format_custom ("l") : "%ld"),
-              ((long) val_long));
-      break;
-    case 'u':
-      sprintf (buf, "%lu", ((unsigned long) val_long));
-      break;
-    case 'x':
-      sprintf (buf, (use_local ? local_hex_format_custom ("l") : "%lx"),
-              ((long) val_long));
+      val = int_string (val_long, 16, 0, 16, 1); break;
       break;
     case 'o':
-      sprintf (buf, (use_local ? local_octal_format_custom ("l") : "%lo"),
-              ((long) val_long));
-      break;
-    case 'b':
-      sprintf (buf, local_hex_format_custom ("02l"),
-              ((long) val_long));
-      break;
-    case 'h':
-      sprintf (buf, local_hex_format_custom ("04l"),
-              ((long) val_long));
-      break;
-    case 'w':
-      sprintf (buf, local_hex_format_custom ("08l"),
-              ((long) val_long));
-      break;
-    case 'g':
-      sprintf (buf, local_hex_format_custom ("016l"),
-              ((long) val_long));
-      break;
+      val = int_string (val_long, 8, 0, 0, use_c_format); break;
     default:
       internal_error (__FILE__, __LINE__, "failed internal consistency check");
-    }
-
-#endif /* !PRINTF_HAS_LONG_LONG */
+    } 
+  fputs_filtered (val, stream);
 }
-#endif
 
 /* This used to be a macro, but I don't think it is called often enough
    to merit such treatment.  */
@@ -540,35 +280,39 @@ longest_to_int (LONGEST arg)
   return (rtnval);
 }
 
-/* Print a floating point value of type TYPE, pointed to in GDB by
-   VALADDR, on STREAM.  */
+/* Print a floating point value of type TYPE (not always a
+   TYPE_CODE_FLT), pointed to in GDB by VALADDR, on STREAM.  */
 
 void
 print_floating (char *valaddr, struct type *type, struct ui_file *stream)
 {
   DOUBLEST doub;
   int inv;
-  const struct floatformat *fmt = floatformat_from_type (type);
+  const struct floatformat *fmt = NULL;
   unsigned len = TYPE_LENGTH (type);
 
-  if (floatformat_is_nan (fmt, valaddr))
+  /* If it is a floating-point, check for obvious problems.  */
+  if (TYPE_CODE (type) == TYPE_CODE_FLT)
+    fmt = floatformat_from_type (type);
+  if (fmt != NULL && floatformat_is_nan (fmt, valaddr))
     {
       if (floatformat_is_negative (fmt, valaddr))
        fprintf_filtered (stream, "-");
       fprintf_filtered (stream, "nan(");
-      fprintf_filtered (stream, local_hex_format_prefix ());
-      fprintf_filtered (stream, floatformat_mantissa (fmt, valaddr));
-      fprintf_filtered (stream, local_hex_format_suffix ());
+      fputs_filtered ("0x", stream);
+      fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
       fprintf_filtered (stream, ")");
       return;
     }
 
-  /* FIXME: cagney/2002-01-15: The simpler extract_typed_floating()
-     routine could be used here only that routine has no way of
-     indicating that the floating point it extracted was invalid (As
-     indicated by INVALID_FLOAT).  Instead, this code here could call
-     something like floating_invalid() to check for an invalid
-     floating point.  */
+  /* NOTE: cagney/2002-01-15: The TYPE passed into print_floating()
+     isn't necessarily a TYPE_CODE_FLT.  Consequently, unpack_double
+     needs to be used as that takes care of any necessary type
+     conversions.  Such conversions are of course direct to DOUBLEST
+     and disregard any possible target floating point limitations.
+     For instance, a u64 would be converted and displayed exactly on a
+     host with 80 bit DOUBLEST but with loss of information on a host
+     with 64 bit DOUBLEST.  */
 
   doub = unpack_double (type, valaddr, &inv);
   if (inv)
@@ -580,9 +324,10 @@ print_floating (char *valaddr, struct type *type, struct ui_file *stream)
   /* FIXME: kettenis/2001-01-20: The following code makes too much
      assumptions about the host and target floating point format.  */
 
-  /* FIXME: cagney/2002-01-15: The floatformat pointed to by FMT
-     should contain all the information needed to print the
-     floating-point value without host dependencies.  */
+  /* NOTE: cagney/2002-02-03: Since the TYPE of what was passed in may
+     not necessarially be a TYPE_CODE_FLT, the below ignores that and
+     instead uses the type's length to determine the precision of the
+     floating-point value being printed.  */
 
   if (len < sizeof (double))
       fprintf_filtered (stream, "%.9g", (double) doub);
@@ -616,7 +361,6 @@ print_binary_chars (struct ui_file *stream, unsigned char *valaddr,
 
   /* FIXME: We should be not printing leading zeroes in most cases.  */
 
-  fprintf_filtered (stream, local_binary_format_prefix ());
   if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
     {
       for (p = valaddr;
@@ -654,7 +398,6 @@ print_binary_chars (struct ui_file *stream, unsigned char *valaddr,
            }
        }
     }
-  fprintf_filtered (stream, local_binary_format_suffix ());
 }
 
 /* VALADDR points to an integer of LEN bytes.
@@ -703,7 +446,7 @@ print_octal_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
   cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
   carry = 0;
 
-  fprintf_filtered (stream, local_octal_format_prefix ());
+  fputs_filtered ("0", stream);
   if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
     {
       for (p = valaddr;
@@ -802,7 +545,6 @@ print_octal_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
        }
     }
 
-  fprintf_filtered (stream, local_octal_format_suffix ());
 }
 
 /* VALADDR points to an integer of LEN bytes.
@@ -845,8 +587,6 @@ print_decimal_chars (struct ui_file *stream, unsigned char *valaddr,
       digits[i] = 0;
     }
 
-  fprintf_filtered (stream, local_decimal_format_prefix ());
-
   /* Ok, we have an unknown number of bytes of data to be printed in
    * decimal.
    *
@@ -941,20 +681,18 @@ print_decimal_chars (struct ui_file *stream, unsigned char *valaddr,
       fprintf_filtered (stream, "%1d", digits[i]);
     }
   xfree (digits);
-
-  fprintf_filtered (stream, local_decimal_format_suffix ());
 }
 
 /* VALADDR points to an integer of LEN bytes.  Print it in hex on stream.  */
 
-static void
+void
 print_hex_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
 {
   unsigned char *p;
 
   /* FIXME: We should be not printing leading zeroes in most cases.  */
 
-  fprintf_filtered (stream, local_hex_format_prefix ());
+  fputs_filtered ("0x", stream);
   if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
     {
       for (p = valaddr;
@@ -973,7 +711,40 @@ print_hex_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
          fprintf_filtered (stream, "%02x", *p);
        }
     }
-  fprintf_filtered (stream, local_hex_format_suffix ());
+}
+
+/* VALADDR points to a char integer of LEN bytes.  Print it out in appropriate language form on stream.  
+   Omit any leading zero chars.  */
+
+void
+print_char_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
+{
+  unsigned char *p;
+
+  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+    {
+      p = valaddr;
+      while (p < valaddr + len - 1 && *p == 0)
+       ++p;
+
+      while (p < valaddr + len)
+       {
+         LA_EMIT_CHAR (*p, stream, '\'');
+         ++p;
+       }
+    }
+  else
+    {
+      p = valaddr + len - 1;
+      while (p > valaddr && *p == 0)
+       --p;
+
+      while (p >= valaddr)
+       {
+         LA_EMIT_CHAR (*p, stream, '\'');
+         --p;
+       }
+    }
 }
 
 /*  Called by various <lang>_val_print routines to print elements of an
@@ -1284,14 +1055,12 @@ val_print_string (CORE_ADDR addr, int len, int width, struct ui_file *stream)
    knows what they really did here.  Radix setting is confusing, e.g.
    setting the input radix to "10" never changes it!  */
 
-/* ARGSUSED */
 static void
 set_input_radix (char *args, int from_tty, struct cmd_list_element *c)
 {
-  set_input_radix_1 (from_tty, *(unsigned *) c->var);
+  set_input_radix_1 (from_tty, input_radix);
 }
 
-/* ARGSUSED */
 static void
 set_input_radix_1 (int from_tty, unsigned radix)
 {
@@ -1304,6 +1073,8 @@ set_input_radix_1 (int from_tty, unsigned radix)
 
   if (radix < 2)
     {
+      /* FIXME: cagney/2002-03-17: This needs to revert the bad radix
+         value.  */
       error ("Nonsense input radix ``decimal %u''; input radix unchanged.",
             radix);
     }
@@ -1315,11 +1086,10 @@ set_input_radix_1 (int from_tty, unsigned radix)
     }
 }
 
-/* ARGSUSED */
 static void
 set_output_radix (char *args, int from_tty, struct cmd_list_element *c)
 {
-  set_output_radix_1 (from_tty, *(unsigned *) c->var);
+  set_output_radix_1 (from_tty, output_radix);
 }
 
 static void
@@ -1339,6 +1109,8 @@ set_output_radix_1 (int from_tty, unsigned radix)
       output_format = 'o';     /* octal */
       break;
     default:
+      /* FIXME: cagney/2002-03-17: This needs to revert the bad radix
+         value.  */
       error ("Unsupported output radix ``decimal %u''; output radix unchanged.",
             radix);
     }
@@ -1375,7 +1147,6 @@ set_radix (char *arg, int from_tty)
 
 /* Show both the input and output radices. */
 
-/*ARGSUSED */
 static void
 show_radix (char *arg, int from_tty)
 {
@@ -1397,7 +1168,6 @@ show_radix (char *arg, int from_tty)
 }
 \f
 
-/*ARGSUSED */
 static void
 set_print (char *arg, int from_tty)
 {
@@ -1406,7 +1176,6 @@ set_print (char *arg, int from_tty)
   help_list (setprintlist, "set print ", -1, gdb_stdout);
 }
 
-/*ARGSUSED */
 static void
 show_print (char *args, int from_tty)
 {
@@ -1431,21 +1200,21 @@ _initialize_valprint (void)
   add_alias_cmd ("p", "print", no_class, 1, &showlist);
   add_alias_cmd ("pr", "print", no_class, 1, &showlist);
 
-  add_show_from_set
+  deprecated_add_show_from_set
     (add_set_cmd ("elements", no_class, var_uinteger, (char *) &print_max,
                  "Set limit on string chars or array elements to print.\n\
 \"set print elements 0\" causes there to be no limit.",
                  &setprintlist),
      &showprintlist);
 
-  add_show_from_set
+  deprecated_add_show_from_set
     (add_set_cmd ("null-stop", no_class, var_boolean,
                  (char *) &stop_print_at_null,
                  "Set printing of char arrays to stop at first null char.",
                  &setprintlist),
      &showprintlist);
 
-  add_show_from_set
+  deprecated_add_show_from_set
     (add_set_cmd ("repeats", no_class, var_uinteger,
                  (char *) &repeat_count_threshold,
                  "Set threshold for repeated print elements.\n\
@@ -1453,27 +1222,27 @@ _initialize_valprint (void)
                  &setprintlist),
      &showprintlist);
 
-  add_show_from_set
+  deprecated_add_show_from_set
     (add_set_cmd ("pretty", class_support, var_boolean,
                  (char *) &prettyprint_structs,
                  "Set prettyprinting of structures.",
                  &setprintlist),
      &showprintlist);
 
-  add_show_from_set
+  deprecated_add_show_from_set
     (add_set_cmd ("union", class_support, var_boolean, (char *) &unionprint,
                  "Set printing of unions interior to structures.",
                  &setprintlist),
      &showprintlist);
 
-  add_show_from_set
+  deprecated_add_show_from_set
     (add_set_cmd ("array", class_support, var_boolean,
                  (char *) &prettyprint_arrays,
                  "Set prettyprinting of arrays.",
                  &setprintlist),
      &showprintlist);
 
-  add_show_from_set
+  deprecated_add_show_from_set
     (add_set_cmd ("address", class_support, var_boolean, (char *) &addressprint,
                  "Set printing of addresses.",
                  &setprintlist),
@@ -1483,21 +1252,21 @@ _initialize_valprint (void)
                   (char *) &input_radix,
                   "Set default input radix for entering numbers.",
                   &setlist);
-  add_show_from_set (c, &showlist);
-  c->function.sfunc = set_input_radix;
+  deprecated_add_show_from_set (c, &showlist);
+  set_cmd_sfunc (c, set_input_radix);
 
   c = add_set_cmd ("output-radix", class_support, var_uinteger,
                   (char *) &output_radix,
                   "Set default output radix for printing of values.",
                   &setlist);
-  add_show_from_set (c, &showlist);
-  c->function.sfunc = set_output_radix;
-
-  /* The "set radix" and "show radix" commands are special in that they are
-     like normal set and show commands but allow two normally independent
-     variables to be either set or shown with a single command.  So the
-     usual add_set_cmd() and add_show_from_set() commands aren't really
-     appropriate. */
+  deprecated_add_show_from_set (c, &showlist);
+  set_cmd_sfunc (c, set_output_radix);
+
+  /* The "set radix" and "show radix" commands are special in that
+     they are like normal set and show commands but allow two normally
+     independent variables to be either set or shown with a single
+     command.  So the usual deprecated_add_set_cmd() and
+     add_show_from_set() commands aren't really appropriate. */
   add_cmd ("radix", class_support, set_radix,
           "Set default input and output number radices.\n\
 Use 'set input-radix' or 'set output-radix' to independently set each.\n\
This page took 0.03091 seconds and 4 git commands to generate.