gdbtypes.resolve_dynamic_range: Add function description.
[deliverable/binutils-gdb.git] / gdb / valprint.c
index 2f6ff94cb535bfc727495a1c5e810d80e9cbdf15..f55b5db1100c5fe46548e82e38812b5f3f85e1eb 100644 (file)
@@ -597,7 +597,7 @@ generic_val_print (struct type *type, const gdb_byte *valaddr,
       break;
 
     case TYPE_CODE_RANGE:
-      /* FIXME: create_range_type does not set the unsigned bit in a
+      /* FIXME: create_static_range_type does not set the unsigned bit in a
          range type (I think it probably should copy it from the
          target type), so we won't print values which are too large to
          fit in a signed integer correctly.  */
@@ -1949,73 +1949,77 @@ print_wchar (gdb_wint_t w, const gdb_byte *orig,
   int need_escape = *need_escapep;
 
   *need_escapep = 0;
-  if (gdb_iswprint (w) && (!need_escape || (!gdb_iswdigit (w)
-                                           && w != LCST ('8')
-                                           && w != LCST ('9'))))
-    {
-      gdb_wchar_t wchar = w;
 
-      if (w == gdb_btowc (quoter) || w == LCST ('\\'))
-       obstack_grow_wstr (output, LCST ("\\"));
-      obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
-    }
-  else
+  /* iswprint implementation on Windows returns 1 for tab character.
+     In order to avoid different printout on this host, we explicitly
+     use wchar_printable function.  */
+  switch (w)
     {
-      switch (w)
+      case LCST ('\a'):
+       obstack_grow_wstr (output, LCST ("\\a"));
+       break;
+      case LCST ('\b'):
+       obstack_grow_wstr (output, LCST ("\\b"));
+       break;
+      case LCST ('\f'):
+       obstack_grow_wstr (output, LCST ("\\f"));
+       break;
+      case LCST ('\n'):
+       obstack_grow_wstr (output, LCST ("\\n"));
+       break;
+      case LCST ('\r'):
+       obstack_grow_wstr (output, LCST ("\\r"));
+       break;
+      case LCST ('\t'):
+       obstack_grow_wstr (output, LCST ("\\t"));
+       break;
+      case LCST ('\v'):
+       obstack_grow_wstr (output, LCST ("\\v"));
+       break;
+      default:
        {
-       case LCST ('\a'):
-         obstack_grow_wstr (output, LCST ("\\a"));
-         break;
-       case LCST ('\b'):
-         obstack_grow_wstr (output, LCST ("\\b"));
-         break;
-       case LCST ('\f'):
-         obstack_grow_wstr (output, LCST ("\\f"));
-         break;
-       case LCST ('\n'):
-         obstack_grow_wstr (output, LCST ("\\n"));
-         break;
-       case LCST ('\r'):
-         obstack_grow_wstr (output, LCST ("\\r"));
-         break;
-       case LCST ('\t'):
-         obstack_grow_wstr (output, LCST ("\\t"));
-         break;
-       case LCST ('\v'):
-         obstack_grow_wstr (output, LCST ("\\v"));
-         break;
-       default:
-         {
-           int i;
+         if (wchar_printable (w) && (!need_escape || (!gdb_iswdigit (w)
+                                                      && w != LCST ('8')
+                                                      && w != LCST ('9'))))
+           {
+             gdb_wchar_t wchar = w;
 
-           for (i = 0; i + width <= orig_len; i += width)
-             {
-               char octal[30];
-               ULONGEST value;
+             if (w == gdb_btowc (quoter) || w == LCST ('\\'))
+               obstack_grow_wstr (output, LCST ("\\"));
+             obstack_grow (output, &wchar, sizeof (gdb_wchar_t));
+           }
+         else
+           {
+             int i;
+
+             for (i = 0; i + width <= orig_len; i += width)
+               {
+                 char octal[30];
+                 ULONGEST value;
 
-               value = extract_unsigned_integer (&orig[i], width,
+                 value = extract_unsigned_integer (&orig[i], width,
                                                  byte_order);
-               /* If the value fits in 3 octal digits, print it that
-                  way.  Otherwise, print it as a hex escape.  */
-               if (value <= 0777)
-                 xsnprintf (octal, sizeof (octal), "\\%.3o",
-                            (int) (value & 0777));
-               else
-                 xsnprintf (octal, sizeof (octal), "\\x%lx", (long) value);
-               append_string_as_wide (octal, output);
-             }
-           /* If we somehow have extra bytes, print them now.  */
-           while (i < orig_len)
-             {
-               char octal[5];
+                 /* If the value fits in 3 octal digits, print it that
+                    way.  Otherwise, print it as a hex escape.  */
+                 if (value <= 0777)
+                   xsnprintf (octal, sizeof (octal), "\\%.3o",
+                              (int) (value & 0777));
+                 else
+                   xsnprintf (octal, sizeof (octal), "\\x%lx", (long) value);
+                 append_string_as_wide (octal, output);
+               }
+             /* If we somehow have extra bytes, print them now.  */
+             while (i < orig_len)
+               {
+                 char octal[5];
 
-               xsnprintf (octal, sizeof (octal), "\\%.3o", orig[i] & 0xff);
-               append_string_as_wide (octal, output);
-               ++i;
-             }
+                 xsnprintf (octal, sizeof (octal), "\\%.3o", orig[i] & 0xff);
+                 append_string_as_wide (octal, output);
+                 ++i;
+               }
 
-           *need_escapep = 1;
-         }
+             *need_escapep = 1;
+           }
          break;
        }
     }
This page took 0.026002 seconds and 4 git commands to generate.