Message ID | 5e9b02e8-9bf7-5429-fda7-2b6efbcbef0a@suse.cz |
---|---|
State | New |
Headers | show |
On Thu, Dec 8, 2016 at 2:37 PM, Martin Liška <mliska@suse.cz> wrote: > Hello. > > Following patch changes behavior in pretty_print_string, where all non-printable > characters are encoded as \x%x. Currently, when some non-printable characters are directly > printed to a dump file stream. That makes it complicated to read a dump file for instance > via a Python script. > > Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. > > Ready to be installed? Ok. Does ISPRINT ('\') yield true or false? That is, I suppose we want to escape that? > Martin
On 12/09/2016 11:00 AM, Richard Biener wrote: > On Thu, Dec 8, 2016 at 2:37 PM, Martin Liška <mliska@suse.cz> wrote: >> Hello. >> >> Following patch changes behavior in pretty_print_string, where all non-printable >> characters are encoded as \x%x. Currently, when some non-printable characters are directly >> printed to a dump file stream. That makes it complicated to read a dump file for instance >> via a Python script. >> >> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. >> >> Ready to be installed? > > Ok. Does ISPRINT ('\') yield true or false? That is, I suppose we > want to escape that? You mean '\\', which is already covered by a case: case '\\': pp_string (pp, "\\\\"); break; I'm going to install the patch. Martin > >> Martin
On Fri, Dec 9, 2016 at 11:05 AM, Martin Liška <mliska@suse.cz> wrote: > On 12/09/2016 11:00 AM, Richard Biener wrote: >> On Thu, Dec 8, 2016 at 2:37 PM, Martin Liška <mliska@suse.cz> wrote: >>> Hello. >>> >>> Following patch changes behavior in pretty_print_string, where all non-printable >>> characters are encoded as \x%x. Currently, when some non-printable characters are directly >>> printed to a dump file stream. That makes it complicated to read a dump file for instance >>> via a Python script. >>> >>> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. >>> >>> Ready to be installed? >> >> Ok. Does ISPRINT ('\') yield true or false? That is, I suppose we >> want to escape that? > > You mean '\\', which is already covered by a case: > > case '\\': > pp_string (pp, "\\\\"); > break; Ah, I see. > I'm going to install the patch. Thanks. > Martin > > >> >>> Martin >
From 0241ee4a366d3c4912def45770945b17c528f920 Mon Sep 17 00:00:00 2001 From: marxin <mliska@suse.cz> Date: Thu, 8 Dec 2016 11:22:44 +0100 Subject: [PATCH] Escape non-printable chars in strings. gcc/ChangeLog: 2016-12-08 Martin Liska <mliska@suse.cz> * tree-pretty-print.c (pretty_print_string): Escape non-printable chars in strings. --- gcc/tree-pretty-print.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index 95db710..5b3e23e 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -3869,7 +3869,14 @@ pretty_print_string (pretty_printer *pp, const char *str) break; default: - pp_character (pp, str[0]); + if (!ISPRINT (str[0])) + { + char buf[5]; + sprintf (buf, "\\x%x", (unsigned char)str[0]); + pp_string (pp, buf); + } + else + pp_character (pp, str[0]); break; } str++; -- 2.10.2