gdb
authorTom Tromey <tromey@redhat.com>
Mon, 18 Oct 2010 19:14:03 +0000 (19:14 +0000)
committerTom Tromey <tromey@redhat.com>
Mon, 18 Oct 2010 19:14:03 +0000 (19:14 +0000)
* valprint.c (val_print_string): Pass 'encoding' to
LA_PRINT_STRING.
gdb/testsuite
* gdb.python/py-prettyprint.exp (run_lang_tests): Test encoding
argument to lazy_string.
* gdb.python/py-prettyprint.py (pp_ls_encoding): New global.
(pp_ls.to_string): Use it.
* gdb.python/py-prettyprint.c (main): Move declarations to top.
Add "estring2" local.

gdb/ChangeLog
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.python/py-prettyprint.c
gdb/testsuite/gdb.python/py-prettyprint.exp
gdb/testsuite/gdb.python/py-prettyprint.py
gdb/valprint.c

index d1f44770ddccfbe4302b80e04f61de364c1764ae..a98fde1ddd0c37b891cc01821b253558a563da8d 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-18  Tom Tromey  <tromey@redhat.com>
+
+       * valprint.c (val_print_string): Pass 'encoding' to
+       LA_PRINT_STRING.
+
 2010-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        Fix the `stopped language detection' testcase for gcc-4.5.
index 9254c5ded24cef04c165b6b6a4c09de8d0385154..9208bb42fcaaecb8d4b6876bd51125dc8ac52235 100644 (file)
@@ -1,3 +1,12 @@
+2010-10-18  Tom Tromey  <tromey@redhat.com>
+
+       * gdb.python/py-prettyprint.exp (run_lang_tests): Test encoding
+       argument to lazy_string.
+       * gdb.python/py-prettyprint.py (pp_ls_encoding): New global.
+       (pp_ls.to_string): Use it.
+       * gdb.python/py-prettyprint.c (main): Move declarations to top.
+       Add "estring2" local.
+
 2010-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        Fix s390x compatibility.
index 66a90141f121a7780fb7368f6fa58818b5430798..b6331115dcea1dc90d6ce7090b98346f7bdd0497 100644 (file)
@@ -213,6 +213,9 @@ main ()
   /* Clearing by being `static' could invoke an other GDB C++ bug.  */
   struct nullstr nullstr;
   nostring_type nstype;
+  struct ns  ns;
+  struct lazystring estring, estring2;
+
   nstype.elements = narray;
   nstype.len = 0;
 
@@ -225,13 +228,14 @@ main ()
   init_s (&arraystruct.x[0], 23);
   init_s (&arraystruct.x[1], 24);
 
-  struct ns  ns;
   ns.null_str = "embedded\0null\0string";
   ns.length = 20;
 
-  struct lazystring estring;
   estring.lazy_str = "embedded x\201\202\203\204" ;
 
+  /* Incomplete UTF-8, but ok Latin-1.  */
+  estring2.lazy_str = "embedded x\302";
+
 #ifdef __cplusplus
   S cps;
 
index 057443eae35e93de19bfde31b04695b1407c188d..b8f37d335c6656d6ab541739824606ef9afdc638 100644 (file)
@@ -91,6 +91,10 @@ proc run_lang_tests {lang} {
     gdb_test "print cstring" " = \"const string\""
 
     gdb_test "print estring" "\"embedded x\\\\201\\\\202\\\\203\\\\204\""
+
+    gdb_test_no_output "python pp_ls_encoding = 'UTF-8'"
+    gdb_test "print estring2" "\"embedded \", <incomplete sequence \\\\302>"
+
     gdb_test "print c" " = container \"container\" with 2 elements = {$nl *.0. = 23,$nl *.1. = 72$nl}"
 
     gdb_test "print nstype" " = {$nl *.0. = 7,$nl *.1. = 42$nl}"
index 23d8271a0832ac75da8a45d82f71e6ca9b85a2e3..e7a0febc9e55258dd611e536c71ad7c930c11fac 100644 (file)
@@ -139,6 +139,8 @@ class pp_ns:
     def display_hint (self):
         return 'string'
 
+pp_ls_encoding = None
+
 class pp_ls:
     "Print a std::basic_string of some kind"
 
@@ -146,7 +148,10 @@ class pp_ls:
         self.val = val
 
     def to_string(self):
-        return self.val['lazy_str'].lazy_string()
+        if pp_ls_encoding is not None:
+            return self.val['lazy_str'].lazy_string(encoding = pp_ls_encoding)
+        else:
+            return self.val['lazy_str'].lazy_string()
 
     def display_hint (self):
         return 'string'
index 4b3789ed1498e751ee0c673e262b4d7fc2de762f..09da426b76b9f81528eb25253197c3eb68e285d8 100644 (file)
@@ -1489,7 +1489,7 @@ val_print_string (struct type *elttype, const char *encoding,
          fputs_filtered (" ", stream);
        }
       LA_PRINT_STRING (stream, elttype, buffer, bytes_read / width,
-                      NULL, force_ellipsis, options);
+                      encoding, force_ellipsis, options);
     }
 
   if (errcode != 0)