From 0fc059972058a4afb22882a61143c7cc48eca883 Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Tue, 27 May 2014 19:56:21 +0800 Subject: [PATCH] Different outputs affected by hosts MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit We find the following fails in gdb test on mingw host. FAIL: gdb.base/wchar.exp: print repeat FAIL: gdb.base/wchar.exp: print repeat_p FAIL: gdb.base/wchar.exp: print repeat (print null on) FAIL: gdb.base/wchar.exp: print repeat (print elements 3) FAIL: gdb.base/wchar.exp: print repeat_p (print elements 3) print repeat^M $7 = L"A", '¢' , "B", '\000' ^M (gdb) FAIL: gdb.base/wchar.exp: print repeat the \242 is expected in the test but cent sign is displayed. In valprint.c:print_wchar, wchar_printable is called to determine whether a wchar is printable. wchar_printable calls iswprint but the iswprint's return value depends on LC_CTYPE setting of locale [1, 2]. The output may vary with different locale settings and OS. IMO, '¢' (cent sign) is a correct output on Windows. [1] http://pubs.opengroup.org/onlinepubs/009604499/functions/iswprint.html [2] http://msdn.microsoft.com/en-us/library/ewx8s4kw.aspx This patch is set $cent to cent sign if the GDB is running on a Windows host. gdb/testsuite: 2014-06-17 Yao Qi * gdb.base/wchar.exp: Set $cent to \u00A2 if "host-charset" is CP1252. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/wchar.exp | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index a4e4e3ea4c8..c6385cd8aa1 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-06-17 Yao Qi + + * gdb.base/wchar.exp: Set $cent to \u00A2 if "host-charset" is + CP1252. + 2014-06-17 Luis Machado * gdb.mi/mi-var-rtti.cc (type_update_when_use_rtti_test): diff --git a/gdb/testsuite/gdb.base/wchar.exp b/gdb/testsuite/gdb.base/wchar.exp index 42904789f0b..651bd88398c 100644 --- a/gdb/testsuite/gdb.base/wchar.exp +++ b/gdb/testsuite/gdb.base/wchar.exp @@ -37,6 +37,20 @@ gdb_test "print simple\[2\]" "= 99 L'c'" gdb_test "print difficile\[2\]" "= 65261 L'\\\\xfeed'" set cent "\\\\242" + +set test "show host-charset" +gdb_test_multiple $test $test { + -re "CP1252\".*\r\n$gdb_prompt $" { + # With Windows code page 1252 (Latin 1), the cent + # is printable. + set cent "\u00A2" + pass $test + } + -re "$gdb_prompt $" { + pass $test + } +} + gdb_test "print repeat" "= L\"A\", '$cent' , \"B.*" global hex -- 2.30.2