[ping] [PATCH] Different outputs affected by locale

Yao Qi
2014-06-04T05:32:21Z

On 05/27/2014 08:10 PM, Yao Qi wrote:
> 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", 'Â¢' <repeats 21 times>, "B", '\000' <repeats 104 times>^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. I noticed that
> gdb.exp:gdb_init set LC_CTYPE to C. If I remove that line, tests
> fail on native testing too.
>
> IMO, either \242 or 'Â¢' (cent sign) is a correct output, which is
> affect by locale, and it is not related to gdb at all.
>
> [1] http://pubs.opengroup.org/onlinepubs/009604499/functions/iswprint.html
> [2] msdn.microsoft.com/en-us/library/ewx8s4kw.aspx
>
> This patch is to add code to 'p repeat[1]' to extract the cent first,
> and then use it to match in the following tests.
>
> gdb/testsuite:
>
> 2014-05-27 Yao Qi <yao@codesourcery.com>
>
> * gdb.base/wchar.exp: Execute command 'p repeat[1]' and extract
> cent from the output.

Ping.

--
Yao (é½å°§)