Fix display of tabulation character for mingw hosts.
Pierre proposed this patch https://sourceware.org/ml/gdb-patches/2013-10/msg00011.html and Tom gave a suggestion that it's better to do check \t in print_wchar <https://sourceware.org/ml/gdb-patches/2013-11/msg00148.html> However, I don't see the follow-up to this discussion. We encounter two fails in printcmds.exp on mingw host, and Pierre's patch fixes them. I pick it up, update a little per Tom's comments, and post it here for review. This patch fixes these fails below on mingw32 host. FAIL: gdb.base/charset.exp: print string in ASCII FAIL: gdb.base/charset.exp: try printing '\t' in ASCII FAIL: gdb.base/charset.exp: print string in ISO-8859-1 FAIL: gdb.base/charset.exp: try printing '\t' in ISO-8859-1 FAIL: gdb.base/charset.exp: print string in UTF-32 FAIL: gdb.base/charset.exp: try printing '\t' in UTF-32 FAIL: gdb.base/printcmds.exp: p ctable1[9] FAIL: gdb.base/printcmds.exp: p &ctable1[1*8] Also regression tested on x86_64-linux. Is it OK? gdb: 2014-05-16 Pierre Muller <muller@sourceware.org> Yao Qi <yao@codesourcery.com> * valprint.c (print_wchar): Move the code on checking whether W is a printable wide char to the default branch of switch statement below. Call wchar_printable instead of gdb_iswprint.
This commit is contained in:
parent
19679ecafc
commit
95c64f92be
2 changed files with 70 additions and 59 deletions
|
@ -1,3 +1,10 @@
|
|||
2014-05-16 Pierre Muller <muller@sourceware.org>
|
||||
Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* valprint.c (print_wchar): Move the code on checking whether
|
||||
W is a printable wide char to the default branch of switch
|
||||
statement below. Call wchar_printable instead of gdb_iswprint.
|
||||
|
||||
2014-05-16 Taimoor Mirza <tmirza@codesourcery.com>
|
||||
|
||||
* arm-tdep.c (thumb_analyze_prologue): Fix offset calculation for
|
||||
|
|
|
@ -1949,18 +1949,10 @@ print_wchar (gdb_wint_t w, const gdb_byte *orig,
|
|||
int need_escape = *need_escapep;
|
||||
|
||||
*need_escapep = 0;
|
||||
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
|
||||
{
|
||||
/* iswprint implementation on Windows returns 1 for tab character.
|
||||
In order to avoid different printout on this host, we explicitly
|
||||
use wchar_printable function. */
|
||||
switch (w)
|
||||
{
|
||||
case LCST ('\a'):
|
||||
|
@ -1985,6 +1977,18 @@ print_wchar (gdb_wint_t w, const gdb_byte *orig,
|
|||
obstack_grow_wstr (output, LCST ("\\v"));
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if (wchar_printable (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
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue