* rs6000-tdep.c (set_sim_regno, init_sim_regno_table,
[deliverable/binutils-gdb.git] / gdb / printcmd.c
index 0502cf1cb2408bcc4d720228577e21549c1f6b3a..c167cc46bc09f88ab3ca5aea43b5270ee0329c24 100644 (file)
@@ -1,7 +1,7 @@
 /* Print values for GNU debugger GDB.
 
    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+   1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
    Foundation, Inc.
 
    This file is part of GDB.
 #include "block.h"
 #include "disasm.h"
 
+#ifdef TUI
+#include "tui/tui.h"           /* For tui_active et.al.   */
+#endif
+
 extern int asm_demangle;       /* Whether to demangle syms in asm printouts */
 extern int addressprint;       /* Whether to print hex addresses in HLL " */
 
@@ -343,47 +347,37 @@ void
 print_scalar_formatted (void *valaddr, struct type *type, int format, int size,
                        struct ui_file *stream)
 {
-  LONGEST val_long;
+  LONGEST val_long = 0;
   unsigned int len = TYPE_LENGTH (type);
 
-  if (len > sizeof (LONGEST)
-      && (format == 't'
-         || format == 'c'
-         || format == 'o'
-         || format == 'u'
-         || format == 'd'
-         || format == 'x'))
+  if (len > sizeof(LONGEST) &&
+      (TYPE_CODE (type) == TYPE_CODE_INT
+       || TYPE_CODE (type) == TYPE_CODE_ENUM))
     {
-      if (!TYPE_UNSIGNED (type)
-         || !extract_long_unsigned_integer (valaddr, len, &val_long))
+      switch (format)
        {
-         /* We can't print it normally, but we can print it in hex.
-            Printing it in the wrong radix is more useful than saying
-            "use /x, you dummy".  */
-         /* FIXME:  we could also do octal or binary if that was the
-            desired format.  */
-         /* FIXME:  we should be using the size field to give us a
-            minimum field width to print.  */
-
-         if (format == 'o')
-           print_octal_chars (stream, valaddr, len);
-         else if (format == 'd')
-           print_decimal_chars (stream, valaddr, len);
-         else if (format == 't')
-           print_binary_chars (stream, valaddr, len);
-         else
-           /* replace with call to print_hex_chars? Looks
-              like val_print_type_code_int is redoing
-              work.  - edie */
-
-           val_print_type_code_int (type, valaddr, stream);
-
+       case 'o':
+         print_octal_chars (stream, valaddr, len);
          return;
-       }
-
-      /* If we get here, extract_long_unsigned_integer set val_long.  */
+       case 'u':
+       case 'd':
+         print_decimal_chars (stream, valaddr, len);
+         return;
+       case 't':
+         print_binary_chars (stream, valaddr, len);
+         return;
+       case 'x':
+         print_hex_chars (stream, valaddr, len);
+         return;
+       case 'c':
+         print_char_chars (stream, valaddr, len);
+         return;
+       default:
+         break;
+       };
     }
-  else if (format != 'f')
+
+  if (format != 'f')
     val_long = unpack_long (type, valaddr);
 
   /* If the value is a pointer, and pointers and addresses are not the
@@ -1141,7 +1135,12 @@ address_info (char *exp, int from_tty)
 
     case LOC_COMPUTED:
     case LOC_COMPUTED_ARG:
-      (SYMBOL_LOCATION_FUNCS (sym)->describe_location) (sym, gdb_stdout);
+      /* FIXME: cagney/2004-01-26: It should be possible to
+        unconditionally call the SYMBOL_OPS method when available.
+        Unfortunately DWARF 2 stores the frame-base (instead of the
+        function) location in a function's symbol.  Oops!  For the
+        moment enable this when/where applicable.  */
+      SYMBOL_OPS (sym)->describe_location (sym, gdb_stdout);
       break;
 
     case LOC_REGISTER:
@@ -1355,7 +1354,7 @@ display_command (char *exp, int from_tty)
 #if defined(TUI)
   /* NOTE: cagney/2003-02-13 The `tui_active' was previously
      `tui_version'.  */
-  if (tui_active && *exp == '$')
+  if (tui_active && exp != NULL && *exp == '$')
     display_it = (tui_set_layout_for_display_command (exp) == TUI_FAILURE);
 #endif
 
@@ -2147,18 +2146,18 @@ but no count or size letter (see \"x\" command).", NULL));
 environment, the value is printed in its own window.");
   set_cmd_completer (c, location_completer);
 
-  add_show_from_set (
-                add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
-                             (char *) &max_symbolic_offset,
+  deprecated_add_show_from_set
+    (add_set_cmd ("max-symbolic-offset", no_class, var_uinteger,
+                 (char *) &max_symbolic_offset,
        "Set the largest offset that will be printed in <symbol+1234> form.",
-                             &setprintlist),
-                     &showprintlist);
-  add_show_from_set (
-                     add_set_cmd ("symbol-filename", no_class, var_boolean,
-                                  (char *) &print_symbol_filename,
-          "Set printing of source filename and line number with <symbol>.",
-                                  &setprintlist),
-                     &showprintlist);
+                 &setprintlist),
+     &showprintlist);
+  deprecated_add_show_from_set
+    (add_set_cmd ("symbol-filename", no_class, var_boolean,
+                 (char *) &print_symbol_filename, "\
+Set printing of source filename and line number with <symbol>.",
+                 &setprintlist),
+     &showprintlist);
 
   /* For examine/instruction a single byte quantity is specified as
      the data.  This avoids problems with value_at_lazy() requiring a
This page took 0.025399 seconds and 4 git commands to generate.