diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d1f44770dd..a98fde1ddd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2010-10-18 Tom Tromey + + * valprint.c (val_print_string): Pass 'encoding' to + LA_PRINT_STRING. + 2010-10-17 Jan Kratochvil Fix the `stopped language detection' testcase for gcc-4.5. diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 9254c5ded2..9208bb42fc 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2010-10-18 Tom Tromey + + * 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 Fix s390x compatibility. diff --git a/gdb/testsuite/gdb.python/py-prettyprint.c b/gdb/testsuite/gdb.python/py-prettyprint.c index 66a90141f1..b6331115dc 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.c +++ b/gdb/testsuite/gdb.python/py-prettyprint.c @@ -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; diff --git a/gdb/testsuite/gdb.python/py-prettyprint.exp b/gdb/testsuite/gdb.python/py-prettyprint.exp index 057443eae3..b8f37d335c 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.exp +++ b/gdb/testsuite/gdb.python/py-prettyprint.exp @@ -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 \", " + 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}" diff --git a/gdb/testsuite/gdb.python/py-prettyprint.py b/gdb/testsuite/gdb.python/py-prettyprint.py index 23d8271a08..e7a0febc9e 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.py +++ b/gdb/testsuite/gdb.python/py-prettyprint.py @@ -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' diff --git a/gdb/valprint.c b/gdb/valprint.c index 4b3789ed14..09da426b76 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -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)