* valprint.c (print_hex_chars): Use local_hex_format_{pre,suf}fix.
authorJim Kingdon <jkingdon@engr.sgi.com>
Sun, 13 Jun 1993 02:32:05 +0000 (02:32 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Sun, 13 Jun 1993 02:32:05 +0000 (02:32 +0000)
* printcmd.c (print_scalar_formatted): Use val_print_type_code_int.

gdb/printcmd.c
gdb/valprint.c

index c6d4a6c29d9856d4dcc4ceaef1faa7d097c2ccce..d40a2f81380f36d875f2c85395f154d2977b78e7 100644 (file)
@@ -355,39 +355,25 @@ print_scalar_formatted (valaddr, type, format, size, stream)
   LONGEST val_long;
   int len = TYPE_LENGTH (type);
 
-  if (size == 'g' && sizeof (LONGEST) < 8
-      && format == 'x')
+  if (len > sizeof (LONGEST)
+      && (format == 't'
+         || format == 'c'
+         || format == 'o'
+         || format == 'u'
+         || format == 'd'
+         || format == 'x'))
     {
-      /* ok, we're going to have to get fancy here.  Assumption: a
-         long is four bytes.  FIXME.  */
-      unsigned long v1, v2;
-
-      v1 = unpack_long (builtin_type_long, valaddr);
-      v2 = unpack_long (builtin_type_long, valaddr + 4);
-
-#if TARGET_BYTE_ORDER == LITTLE_ENDIAN
-      /* Swap the two for printing */
-      {
-        unsigned long tmp;
-
-        tmp = v1;
-        v1 = v2;
-        v2 = tmp;
-      }
-#endif
-  
-      switch (format)
-       {
-       case 'x':
-         fprintf_filtered (stream, local_hex_format_custom("08x%08"), v1, v2);
-         break;
-       default:
-         error ("Output size \"g\" unimplemented for format \"%c\".",
-                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.  */
+      val_print_type_code_int (type, valaddr, stream);
       return;
     }
-      
+
   val_long = unpack_long (type, valaddr);
 
   /* If value is unsigned, truncate it in case negative.  */
index b09474dd4ba56bea75de95b2894892ab584c8390..b3b1f71dc418cf385dc7eed780100272650bb0ff 100644 (file)
@@ -304,7 +304,7 @@ val_print_type_code_int (type, valaddr, stream)
                     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
@@ -517,8 +517,10 @@ print_hex_chars (stream, valaddr, len)
      unsigned len;
 {
   unsigned char *p;
-  
-  fprintf_filtered (stream, "0x");
+
+  /* FIXME: We should be not printing leading zeroes in most cases.  */
+
+  fprintf_filtered (stream, local_hex_format_prefix ());
 #if TARGET_BYTE_ORDER == BIG_ENDIAN
   for (p = valaddr;
        p < valaddr + len;
@@ -531,6 +533,7 @@ print_hex_chars (stream, valaddr, len)
     {
       fprintf_filtered (stream, "%02x", *p);
     }
+  fprintf_filtered (stream, local_hex_format_suffix ());
 }
 
 /*  Called by various <lang>_val_print routines to print elements of an