* [PATCH] Escape non-printable chars in dumped strings.
@ 2016-12-08 13:38 Martin Liška
2016-12-08 15:00 ` Martin Liška
2016-12-09 10:01 ` Richard Biener
0 siblings, 2 replies; 6+ messages in thread
From: Martin Liška @ 2016-12-08 13:38 UTC (permalink / raw)
To: GCC Patches
[-- Attachment #1: Type: text/plain, Size: 398 bytes --]
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?
Martin
[-- Attachment #2: 0001-Escape-non-printable-chars-in-strings.patch --]
[-- Type: text/x-patch, Size: 953 bytes --]
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Escape non-printable chars in dumped strings.
2016-12-08 13:38 [PATCH] Escape non-printable chars in dumped strings Martin Liška
@ 2016-12-08 15:00 ` Martin Liška
2016-12-09 10:01 ` Richard Biener
2016-12-09 10:01 ` Richard Biener
1 sibling, 1 reply; 6+ messages in thread
From: Martin Liška @ 2016-12-08 15:00 UTC (permalink / raw)
To: GCC Patches
[-- Attachment #1: Type: text/plain, Size: 60 bytes --]
There's a patch that adds a new test-case for that.
Martin
[-- Attachment #2: 0001-New-test.patch --]
[-- Type: text/x-patch, Size: 8977 bytes --]
From e8805309edca43153721ce3c79252a4f4a3b2073 Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Thu, 8 Dec 2016 15:59:28 +0100
Subject: [PATCH] New test
gcc/testsuite/ChangeLog:
2016-12-08 Martin Liska <mliska@suse.cz>
* gcc.dg/tree-ssa/dump-3.c: New test.
---
gcc/testsuite/gcc.dg/tree-ssa/dump-3.c | 271 +++++++++++++++++++++++++++++++++
1 file changed, 271 insertions(+)
create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/dump-3.c
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/dump-3.c b/gcc/testsuite/gcc.dg/tree-ssa/dump-3.c
new file mode 100644
index 0000000..8533124
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/dump-3.c
@@ -0,0 +1,271 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -fdump-tree-optimized" } */
+
+int main()
+{
+ char string_0[] = "\x0";
+ char string_1[] = "\x1";
+ char string_2[] = "\x2";
+ char string_3[] = "\x3";
+ char string_4[] = "\x4";
+ char string_5[] = "\x5";
+ char string_6[] = "\x6";
+ char string_7[] = "\x7";
+ char string_8[] = "\x8";
+ char string_9[] = "\x9";
+ char string_10[] = "\xa";
+ char string_11[] = "\xb";
+ char string_12[] = "\xc";
+ char string_13[] = "\xd";
+ char string_14[] = "\xe";
+ char string_15[] = "\xf";
+ char string_16[] = "\x10";
+ char string_17[] = "\x11";
+ char string_18[] = "\x12";
+ char string_19[] = "\x13";
+ char string_20[] = "\x14";
+ char string_21[] = "\x15";
+ char string_22[] = "\x16";
+ char string_23[] = "\x17";
+ char string_24[] = "\x18";
+ char string_25[] = "\x19";
+ char string_26[] = "\x1a";
+ char string_27[] = "\x1b";
+ char string_28[] = "\x1c";
+ char string_29[] = "\x1d";
+ char string_30[] = "\x1e";
+ char string_31[] = "\x1f";
+ char string_32[] = "\x20";
+ char string_33[] = "\x21";
+ char string_34[] = "\x22";
+ char string_35[] = "\x23";
+ char string_36[] = "\x24";
+ char string_37[] = "\x25";
+ char string_38[] = "\x26";
+ char string_39[] = "\x27";
+ char string_40[] = "\x28";
+ char string_41[] = "\x29";
+ char string_42[] = "\x2a";
+ char string_43[] = "\x2b";
+ char string_44[] = "\x2c";
+ char string_45[] = "\x2d";
+ char string_46[] = "\x2e";
+ char string_47[] = "\x2f";
+ char string_48[] = "\x30";
+ char string_49[] = "\x31";
+ char string_50[] = "\x32";
+ char string_51[] = "\x33";
+ char string_52[] = "\x34";
+ char string_53[] = "\x35";
+ char string_54[] = "\x36";
+ char string_55[] = "\x37";
+ char string_56[] = "\x38";
+ char string_57[] = "\x39";
+ char string_58[] = "\x3a";
+ char string_59[] = "\x3b";
+ char string_60[] = "\x3c";
+ char string_61[] = "\x3d";
+ char string_62[] = "\x3e";
+ char string_63[] = "\x3f";
+ char string_64[] = "\x40";
+ char string_65[] = "\x41";
+ char string_66[] = "\x42";
+ char string_67[] = "\x43";
+ char string_68[] = "\x44";
+ char string_69[] = "\x45";
+ char string_70[] = "\x46";
+ char string_71[] = "\x47";
+ char string_72[] = "\x48";
+ char string_73[] = "\x49";
+ char string_74[] = "\x4a";
+ char string_75[] = "\x4b";
+ char string_76[] = "\x4c";
+ char string_77[] = "\x4d";
+ char string_78[] = "\x4e";
+ char string_79[] = "\x4f";
+ char string_80[] = "\x50";
+ char string_81[] = "\x51";
+ char string_82[] = "\x52";
+ char string_83[] = "\x53";
+ char string_84[] = "\x54";
+ char string_85[] = "\x55";
+ char string_86[] = "\x56";
+ char string_87[] = "\x57";
+ char string_88[] = "\x58";
+ char string_89[] = "\x59";
+ char string_90[] = "\x5a";
+ char string_91[] = "\x5b";
+ char string_92[] = "\x5c";
+ char string_93[] = "\x5d";
+ char string_94[] = "\x5e";
+ char string_95[] = "\x5f";
+ char string_96[] = "\x60";
+ char string_97[] = "\x61";
+ char string_98[] = "\x62";
+ char string_99[] = "\x63";
+ char string_100[] = "\x64";
+ char string_101[] = "\x65";
+ char string_102[] = "\x66";
+ char string_103[] = "\x67";
+ char string_104[] = "\x68";
+ char string_105[] = "\x69";
+ char string_106[] = "\x6a";
+ char string_107[] = "\x6b";
+ char string_108[] = "\x6c";
+ char string_109[] = "\x6d";
+ char string_110[] = "\x6e";
+ char string_111[] = "\x6f";
+ char string_112[] = "\x70";
+ char string_113[] = "\x71";
+ char string_114[] = "\x72";
+ char string_115[] = "\x73";
+ char string_116[] = "\x74";
+ char string_117[] = "\x75";
+ char string_118[] = "\x76";
+ char string_119[] = "\x77";
+ char string_120[] = "\x78";
+ char string_121[] = "\x79";
+ char string_122[] = "\x7a";
+ char string_123[] = "\x7b";
+ char string_124[] = "\x7c";
+ char string_125[] = "\x7d";
+ char string_126[] = "\x7e";
+ char string_127[] = "\x7f";
+ char string_128[] = "\x80";
+ char string_129[] = "\x81";
+ char string_130[] = "\x82";
+ char string_131[] = "\x83";
+ char string_132[] = "\x84";
+ char string_133[] = "\x85";
+ char string_134[] = "\x86";
+ char string_135[] = "\x87";
+ char string_136[] = "\x88";
+ char string_137[] = "\x89";
+ char string_138[] = "\x8a";
+ char string_139[] = "\x8b";
+ char string_140[] = "\x8c";
+ char string_141[] = "\x8d";
+ char string_142[] = "\x8e";
+ char string_143[] = "\x8f";
+ char string_144[] = "\x90";
+ char string_145[] = "\x91";
+ char string_146[] = "\x92";
+ char string_147[] = "\x93";
+ char string_148[] = "\x94";
+ char string_149[] = "\x95";
+ char string_150[] = "\x96";
+ char string_151[] = "\x97";
+ char string_152[] = "\x98";
+ char string_153[] = "\x99";
+ char string_154[] = "\x9a";
+ char string_155[] = "\x9b";
+ char string_156[] = "\x9c";
+ char string_157[] = "\x9d";
+ char string_158[] = "\x9e";
+ char string_159[] = "\x9f";
+ char string_160[] = "\xa0";
+ char string_161[] = "\xa1";
+ char string_162[] = "\xa2";
+ char string_163[] = "\xa3";
+ char string_164[] = "\xa4";
+ char string_165[] = "\xa5";
+ char string_166[] = "\xa6";
+ char string_167[] = "\xa7";
+ char string_168[] = "\xa8";
+ char string_169[] = "\xa9";
+ char string_170[] = "\xaa";
+ char string_171[] = "\xab";
+ char string_172[] = "\xac";
+ char string_173[] = "\xad";
+ char string_174[] = "\xae";
+ char string_175[] = "\xaf";
+ char string_176[] = "\xb0";
+ char string_177[] = "\xb1";
+ char string_178[] = "\xb2";
+ char string_179[] = "\xb3";
+ char string_180[] = "\xb4";
+ char string_181[] = "\xb5";
+ char string_182[] = "\xb6";
+ char string_183[] = "\xb7";
+ char string_184[] = "\xb8";
+ char string_185[] = "\xb9";
+ char string_186[] = "\xba";
+ char string_187[] = "\xbb";
+ char string_188[] = "\xbc";
+ char string_189[] = "\xbd";
+ char string_190[] = "\xbe";
+ char string_191[] = "\xbf";
+ char string_192[] = "\xc0";
+ char string_193[] = "\xc1";
+ char string_194[] = "\xc2";
+ char string_195[] = "\xc3";
+ char string_196[] = "\xc4";
+ char string_197[] = "\xc5";
+ char string_198[] = "\xc6";
+ char string_199[] = "\xc7";
+ char string_200[] = "\xc8";
+ char string_201[] = "\xc9";
+ char string_202[] = "\xca";
+ char string_203[] = "\xcb";
+ char string_204[] = "\xcc";
+ char string_205[] = "\xcd";
+ char string_206[] = "\xce";
+ char string_207[] = "\xcf";
+ char string_208[] = "\xd0";
+ char string_209[] = "\xd1";
+ char string_210[] = "\xd2";
+ char string_211[] = "\xd3";
+ char string_212[] = "\xd4";
+ char string_213[] = "\xd5";
+ char string_214[] = "\xd6";
+ char string_215[] = "\xd7";
+ char string_216[] = "\xd8";
+ char string_217[] = "\xd9";
+ char string_218[] = "\xda";
+ char string_219[] = "\xdb";
+ char string_220[] = "\xdc";
+ char string_221[] = "\xdd";
+ char string_222[] = "\xde";
+ char string_223[] = "\xdf";
+ char string_224[] = "\xe0";
+ char string_225[] = "\xe1";
+ char string_226[] = "\xe2";
+ char string_227[] = "\xe3";
+ char string_228[] = "\xe4";
+ char string_229[] = "\xe5";
+ char string_230[] = "\xe6";
+ char string_231[] = "\xe7";
+ char string_232[] = "\xe8";
+ char string_233[] = "\xe9";
+ char string_234[] = "\xea";
+ char string_235[] = "\xeb";
+ char string_236[] = "\xec";
+ char string_237[] = "\xed";
+ char string_238[] = "\xee";
+ char string_239[] = "\xef";
+ char string_240[] = "\xf0";
+ char string_241[] = "\xf1";
+ char string_242[] = "\xf2";
+ char string_243[] = "\xf3";
+ char string_244[] = "\xf4";
+ char string_245[] = "\xf5";
+ char string_246[] = "\xf6";
+ char string_247[] = "\xf7";
+ char string_248[] = "\xf8";
+ char string_249[] = "\xf9";
+ char string_250[] = "\xfa";
+ char string_251[] = "\xfb";
+ char string_252[] = "\xfc";
+ char string_253[] = "\xfd";
+ char string_254[] = "\xfe";
+ char string_255[] = "\xff";
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump "string_0 = \"\";" "optimized" } } */
+/* { dg-final { scan-tree-dump "string_4 = \"\\\\4\";" "optimized" } } */
+/* { dg-final { scan-tree-dump "string_28 = \"\\\\x1c\";" "optimized" } } */
+/* { dg-final { scan-tree-dump "string_51 = \"3\";" "optimized" } } */
+/* { dg-final { scan-tree-dump "string_255 = \"\\\\xff\";" "optimized" } } */
+
--
2.10.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Escape non-printable chars in dumped strings.
2016-12-08 13:38 [PATCH] Escape non-printable chars in dumped strings Martin Liška
2016-12-08 15:00 ` Martin Liška
@ 2016-12-09 10:01 ` Richard Biener
2016-12-09 10:05 ` Martin Liška
1 sibling, 1 reply; 6+ messages in thread
From: Richard Biener @ 2016-12-09 10:01 UTC (permalink / raw)
To: Martin Liška; +Cc: GCC Patches
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Escape non-printable chars in dumped strings.
2016-12-08 15:00 ` Martin Liška
@ 2016-12-09 10:01 ` Richard Biener
0 siblings, 0 replies; 6+ messages in thread
From: Richard Biener @ 2016-12-09 10:01 UTC (permalink / raw)
To: Martin Liška; +Cc: GCC Patches
On Thu, Dec 8, 2016 at 4:00 PM, Martin Liška <mliska@suse.cz> wrote:
> There's a patch that adds a new test-case for that.
Ok.
> Martin
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Escape non-printable chars in dumped strings.
2016-12-09 10:01 ` Richard Biener
@ 2016-12-09 10:05 ` Martin Liška
2016-12-09 10:13 ` Richard Biener
0 siblings, 1 reply; 6+ messages in thread
From: Martin Liška @ 2016-12-09 10:05 UTC (permalink / raw)
To: Richard Biener; +Cc: GCC Patches
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Escape non-printable chars in dumped strings.
2016-12-09 10:05 ` Martin Liška
@ 2016-12-09 10:13 ` Richard Biener
0 siblings, 0 replies; 6+ messages in thread
From: Richard Biener @ 2016-12-09 10:13 UTC (permalink / raw)
To: Martin Liška; +Cc: GCC Patches
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
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-12-09 10:13 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-08 13:38 [PATCH] Escape non-printable chars in dumped strings Martin Liška
2016-12-08 15:00 ` Martin Liška
2016-12-09 10:01 ` Richard Biener
2016-12-09 10:01 ` Richard Biener
2016-12-09 10:05 ` Martin Liška
2016-12-09 10:13 ` Richard Biener
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).