This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] [testsuite] Set target-charset to ascii
- From: Yao Qi <yao at codesourcery dot com>
- To: <gdb-patches at sourceware dot org>
- Date: Thu, 10 Apr 2014 10:54:45 +0800
- Subject: Re: [PATCH] [testsuite] Set target-charset to ascii
- Authentication-results: sourceware.org; auth=none
- References: <1395711550-29273-1-git-send-email-yao at codesourcery dot com> <533A23CE dot 8040905 at codesourcery dot com>
On 04/01/2014 10:26 AM, Yao Qi wrote:
> On 03/25/2014 09:39 AM, Yao Qi wrote:
>> We find gdb.base/printcmds.exp fails a lot on windows host, like this,
>>
>> p ctable1[163]
>> $204 = 163 'Â'
>> (gdb) FAIL: gdb.base/printcmds.exp: p ctable1[163]
>>
>> however, on linux host,
>>
>> p ctable1[163]
>> $205 = 163 '\243'
>> (gdb) PASS: gdb.base/printcmds.exp: p ctable1[163]
>>
>> The printing related code is in valprint.c:print_wchar,
>>
>> 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
>> {
>> // print W in hex or octal digits
>> }
>>
>> When I debug gdb on different hosts, I find
>> on windows host, gdb_iswprint (iswprint) returns true if 'w' is 163.
>> However, on linux host, iswprint returns false if 'w' is 163. Looks
>> this difference is caused by the charset. On Linux host,
>> the target-charset is ANSI_X3.4-1968, while on windows host, the
>> target-charset is CP1252.
>>
>> We can see how target-charset affects the output. On linux host,
>>
>> (gdb) set target-charset ASCII
>> (gdb) p ctable1[163]
>> $1 = 163 '\243'
>> (gdb) set target-charset CP1252
>> (gdb) p ctable1[163]
>> $2 = 163 'Â'
>>
>> we can print the pound sign too, and it shows target-charset does
>> affect the output.
>>
>> This patch is to set target-charset temporarily to ASCII for some
>> charset-sensitive tests. Tested on arm-none-eabi and
>> powerpc-linux-gnu on mingw32 host. More than one hundred fails are
>> fixed.
>>
>> gdb/testsuite:
>>
>> 2014-03-25 Yao Qi <yao@codesourcery.com>
>>
>> * lib/gdb.exp (with_target_charset): New proc.
>> * gdb.base/printcmds.exp (test_print_all_chars): Wrap tests with
>> with_target_charset.
>> (test_print_strings): Likewise.
>> (test_repeat_bytes): Likewise.
>> * gdb.base/setvar.exp: Set target-charset to ASCII temporarily
>> for some tests.
>
> Ping. https://sourceware.org/ml/gdb-patches/2014-03/msg00589.html
>
Ping^2.
--
Yao (éå)