* amd64-tdep.c (amd64_frame_cache): Fix comment.
[deliverable/binutils-gdb.git] / gdb / printcmd.c
index 2767ec74a3abf21b09cb966179d7164a9bd0ce08..9734ec12ed6262de16a5bf982eaeb179295e43e6 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
@@ -1360,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
 
This page took 0.0247 seconds and 4 git commands to generate.