From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7528 invoked by alias); 15 Jan 2013 11:19:04 -0000 Received: (qmail 7518 invoked by uid 22791); 15 Jan 2013 11:19:03 -0000 X-SWARE-Spam-Status: No, hits=-4.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_XP X-Spam-Check-By: sourceware.org Received: from mail-oa0-f48.google.com (HELO mail-oa0-f48.google.com) (209.85.219.48) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 15 Jan 2013 11:18:50 +0000 Received: by mail-oa0-f48.google.com with SMTP id h2so5058556oag.21 for ; Tue, 15 Jan 2013 03:18:50 -0800 (PST) Received: by 10.182.150.72 with SMTP id ug8mr64304079obb.1.1358248729920; Tue, 15 Jan 2013 03:18:49 -0800 (PST) MIME-Version: 1.0 Received: by 10.60.84.5 with HTTP; Tue, 15 Jan 2013 03:18:08 -0800 (PST) In-Reply-To: <50F3ADB8.1000603@codesourcery.com> References: <50F3ADB8.1000603@codesourcery.com> From: Hui Zhu Date: Tue, 15 Jan 2013 11:19:00 -0000 Message-ID: Subject: Re: [PATCH] Add CTF support to GDB [5] Add test for CTF function To: Yao Qi , Joel Brobecker Cc: gdb-patches ml , Tom Tromey Content-Type: multipart/mixed; boundary=f46d044469ad10466704d351ede7 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2013-01/txt/msg00302.txt.bz2 --f46d044469ad10466704d351ede7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 3572 Hi Yao and Joel, Thanks for your review. On Mon, Jan 14, 2013 at 3:03 PM, Yao Qi wrote: > On 01/14/2013 11:48 AM, Hui Zhu wrote: >> >> --- a/testsuite/gdb.trace/Makefile.in >> +++ b/testsuite/gdb.trace/Makefile.in >> @@ -5,7 +5,7 @@ srcdir =3D @srcdir@ >> >> PROGS =3D ax backtrace deltrace disconnected-tracing infotrace packetl= en \ >> passc-dyn passcount report save-trace tfile tfind tracecmd tsv \ >> - unavailable while-dyn while-stepping >> + unavailable while-dyn while-stepping ctf > > > Looks we should keep the alphabetic order of this list. Fixed. > >> --- /dev/null >> +++ b/testsuite/gdb.trace/ctf.exp >> + >> +#Test "tsave -ctf" >> + >> +gdb_test "trace 24" "Tracepoint \[0-9\]+ at .*" > > > We can use 'gdb_get_line_number' instead of hard-code the line number. Fixed. > >> +gdb_trace_setactions "set action for line 24" "" \ >> + "collect \$local" "^$" >> +gdb_test "trace 25" "Tracepoint \[0-9\]+ at .*" > > > Likewise. > >> +gdb_trace_setactions "set action for line 25" "" \ >> + "collect \$reg" "^$" >> + >> +gdb_test_no_output "tstart" >> + >> +gdb_test "break end" "Breakpoint ${decimal} at .*" >> +gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" >> +gdb_test_no_output "tstop" >> + >> +gdb_test "tsave -ctf $ctfdir" "Trace data saved to directory >> \'$ctfdir\'." >> + > > > What if GDB is built without ctf support? Because tsave -ctf is not base on the babeltrace. So it is not a issue. Please see the last part of http://sourceware.org/ml/gdb-patches/2012-12/msg00492.html to see the introduce about that. And I added a check unsupport in "target ctf" because it need support of babeltrace. > >> +set ret [exec whereis babeltrace] > > > We should use 'remote_exec host' instead of 'exec' and I am not sure it is > portable to check 'babeltrace' exist by 'whereis'. I found an example in gas-defs.exp and update ctf.exp according to gas_vers= ion. > >> +if { [string compare "babeltrace:" $ret] =3D=3D 0 } then { >> + unsupported "babeltrace check ctf directory" >> +} else { >> + set ret [catch {exec babeltrace $ctfdir} results] > > > remote_exec host 'babeltrace $ctfdir' > >> + if { $ret !=3D 0 } then { >> + fail "babeltrace open ctf directory" >> + return -1 >> + } >> +} >> + >> + >> +#Test "target ctf" >> + >> +gdb_test_no_output "set confirm off" >> +gdb_test_no_output "target ctf $ctfdir" >> + >> +gdb_test "tfind 0" ".*Found trace frame 0.*" >> +gdb_test "tdump" ".*b =3D 1.*a =3D 0.*i =3D 0.*" >> +gdb_test "print \$b" ".* =3D 1.*" >> +gdb_test "print \$a" ".* =3D 0.*" >> +gdb_test "print \$i" ".* =3D 0.*" >> + >> +gdb_test "tfind 1" ".*Found trace frame 1.*" >> + >> +gdb_test "tfind 2" ".*Found trace frame 2.*" >> +gdb_test "tdump" ".*b =3D 2.*a =3D 1.*i =3D 1.*" >> +gdb_test "print \$b" ".* =3D 2.*" >> +gdb_test "print \$a" ".* =3D 1.*" >> +gdb_test "print \$i" ".* =3D 1.*" >> + > > > I don't run it but there must be some duplicated test results in gdb.sum, > such as "tdump", "print $a", and etc. > > It is better to run 'tfind' until there is no trace frame in the trace fi= le, > to make sure no unexpected trace frame is generated. Fixed. > >> + >> +#Clean >> + >> +exec rm -rf $ctfdir > > > remote_exec host "rm -rf $ctfdir" > -- > Yao (=E9=BD=90=E5=B0=A7) And I added copyright header in ctf.c. Post a new version. Please help me review it. Thanks, Hui 2013-01-15 Hui Zhu * gdb.trace/Makefile.in (PROGS): Add ctf. * gdb.trace/ctf.c: New file. * gdb.trace/ctf.exp: New file. --f46d044469ad10466704d351ede7 Content-Type: text/plain; charset=US-ASCII; name="ctf-test.txt" Content-Disposition: attachment; filename="ctf-test.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hbyy6qpq0 Content-length: 9183 LS0tIGEvdGVzdHN1aXRlL2dkYi50cmFjZS9NYWtlZmlsZS5pbgorKysgYi90 ZXN0c3VpdGUvZ2RiLnRyYWNlL01ha2VmaWxlLmluCkBAIC0zLDcgKzMsNyBA QCBzcmNkaXIgPSBAc3JjZGlyQAogCiAuUEhPTlk6IGFsbCBjbGVhbiBtb3N0 bHljbGVhbiBkaXN0Y2xlYW4gcmVhbGNsZWFuCiAKLVBST0dTID0gYXggYmFj a3RyYWNlIGRlbHRyYWNlIGRpc2Nvbm5lY3RlZC10cmFjaW5nIGluZm90cmFj ZSBwYWNrZXRsZW4gXAorUFJPR1MgPSBheCBiYWNrdHJhY2UgY3RmIGRlbHRy YWNlIGRpc2Nvbm5lY3RlZC10cmFjaW5nIGluZm90cmFjZSBwYWNrZXRsZW4g XAogCXBhc3NjLWR5biBwYXNzY291bnQgcmVwb3J0IHNhdmUtdHJhY2UgdGZp bGUgdGZpbmQgdHJhY2VjbWQgdHN2IFwKIAl1bmF2YWlsYWJsZSB3aGlsZS1k eW4gd2hpbGUtc3RlcHBpbmcKIAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Rz dWl0ZS9nZGIudHJhY2UvY3RmLmMKQEAgLTAsMCArMSw0OCBAQAorLyogQ1RG IHRlc3QgcHJvZ3JhbS4KKworICAgQ29weXJpZ2h0IChDKSAyMDEzIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK K3R5cGVkZWYgY2hhciB0ZXN0X3QxOwordHlwZWRlZiB0ZXN0X3QxIHRlc3Rf dDI7Cit0eXBlZGVmIHRlc3RfdDIgdGVzdF90MzsKKworaW50CittYWluICgp Cit7CisgIGludCBpOworICBpbnQgYSA9IDA7CisgIHRlc3RfdDMgYiA9IDE7 CisgIHRlc3RfdDMgY1tdWzRdID0geyIxMjMiLCAiNDU2IiwgIjc4OSIsICIx MjMiLCAiNDU2IiwgIjc4OSJ9OworICBzdHJ1Y3QKKyAgICB7CisgICAgICBp bnQgYTsKKyAgICAgIGludCBiOworICAgIH0gZFsyXVsyXSA9IHt7ezEsIDJ9 LCB7MywgNH19LCB7ezUsIDZ9LCB7NywgOH19fTsKKworICBmb3IgKGkgPSAw OyBpIDwgMTA7IGkrKykKKyAgICB7CisgICAgICArK2E7ICAvKiBzZXQgdHJh Y2Vwb2ludCAxIGhlcmUgKi8KKyAgICAgICsrYjsgIC8qIHNldCB0cmFjZXBv aW50IDIgaGVyZSAqLworICAgICAgKytjWzBdWzFdOworICAgICAgKytkWzBd WzFdLmE7CisgICAgfQorCisgIC8qIHNldCBicmVha3BvaW50IGVuZCBoZXJl ICovCisKKyAgcmV0dXJuIDA7Cit9Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHN1aXRlL2dkYi50cmFjZS9jdGYuZXhwCkBAIC0wLDAgKzEsMTQwIEBACisj ICAgQ29weXJpZ2h0IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitsb2FkX2xpYiAidHJhY2Utc3Vw cG9ydC5leHAiOworCitzdGFuZGFyZF90ZXN0ZmlsZQorc2V0IGV4ZWN1dGFi bGUgJHRlc3RmaWxlCitzZXQgZXhwZmlsZSAkdGVzdGZpbGUuZXhwCitzZXQg Y3RmZGlyICR0ZXN0ZmlsZS5jdGYKKworaWYgW3ByZXBhcmVfZm9yX3Rlc3Rp bmcgJGV4cGZpbGUgJGV4ZWN1dGFibGUgJHNyY2ZpbGUgXAorICAgICAgICB7 ZGVidWcgbm93YXJuaW5nc31dIHsKKyAgICB1bnRlc3RlZCAiZmFpbGVkIHRv IHByZXBhcmUgZm9yIHRyYWNlIHRlc3RzIgorICAgIHJldHVybiAtMQorfQor CitpZiAhW3J1bnRvX21haW5dIHsKKyAgICBmYWlsICJjYW4ndCBydW4gdG8g bWFpbiB0byBjaGVjayBmb3IgdHJhY2Ugc3VwcG9ydCIKKyAgICByZXR1cm4g LTEKK30KKworaWYgIVtnZGJfdGFyZ2V0X3N1cHBvcnRzX3RyYWNlXSB7Cisg ICAgdW5zdXBwb3J0ZWQgInRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHRyYWNl IgorICAgIHJldHVybiAtMTsKK30KKworCisjVGVzdCAidHNhdmUgLWN0ZiIK Kworc2V0IHRyYWNlX2xvY2F0aW9uMSBbZ2RiX2dldF9saW5lX251bWJlciAi c2V0IHRyYWNlcG9pbnQgMSBoZXJlIl0KK2dkYl90ZXN0ICJ0cmFjZSAkdHJh Y2VfbG9jYXRpb24xIiAiVHJhY2Vwb2ludCAke2RlY2ltYWx9IGF0IC4qIgor Z2RiX3RyYWNlX3NldGFjdGlvbnMgInNldCBhY3Rpb24gZm9yIGxpbmUgJHRy YWNlX2xvY2F0aW9uMSIgIiIgXAorCSJjb2xsZWN0IFwkbG9jYWwiICJeJCIK Kworc2V0IHRyYWNlX2xvY2F0aW9uMiBbZ2RiX2dldF9saW5lX251bWJlciAi c2V0IHRyYWNlcG9pbnQgMiBoZXJlIl0KK2dkYl90ZXN0ICJ0cmFjZSAkdHJh Y2VfbG9jYXRpb24yIiAiVHJhY2Vwb2ludCAke2RlY2ltYWx9IGF0IC4qIgor Z2RiX3RyYWNlX3NldGFjdGlvbnMgInNldCBhY3Rpb24gZm9yIGxpbmUgJHRy YWNlX2xvY2F0aW9uMiIgIiIgXAorCSJjb2xsZWN0IFwkcmVnIiAiXiQiCisK K2dkYl90ZXN0X25vX291dHB1dCAidHN0YXJ0IgorCitzZXQgYnJlYWtfZW5k IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCBlbmQgaGVy ZSJdCitnZGJfdGVzdCAiYnJlYWsgJGJyZWFrX2VuZCIgIkJyZWFrcG9pbnQg JHtkZWNpbWFsfSBhdCAuKiIKKworZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29u dGludWluZ1xcLlxbIFxyXG5cXStCcmVha3BvaW50LioiCitnZGJfdGVzdF9u b19vdXRwdXQgInRzdG9wIgorCitnZGJfdGVzdCAidHNhdmUgLWN0ZiAkY3Rm ZGlyIiAiVHJhY2UgZGF0YSBzYXZlZCB0byBkaXJlY3RvcnkgXCckY3RmZGly XCcuIgorCisjR2V0IHRoZSBwYXRobmFtZSBvZiBiYWJlbHRyYWNlIGFuZCBz ZXQgaXQgdG8gJHdoaWNoX2JhYmVsdHJhY2UuCisjSWYgaG9zdCBkb2Vzbid0 IGhhdmUgYmFiZWx0cmFjZSwgJHdoaWNoX2JhYmVsdHJhY2Ugd2lsbCBzZXQg dG8gMC4KK2lmIFtpc19yZW1vdGUgaG9zdF0gdGhlbiB7CisgICAgcmVtb3Rl X2V4ZWMgaG9zdCAid2hpY2ggYmFiZWx0cmFjZSIgIiIgIiIgImJhYmVsdHJh Y2Uud2hpY2giCisgICAgcmVtb3RlX3VwbG9hZCBob3N0ICJiYWJlbHRyYWNl LndoaWNoIgorICAgIHNldCB3aGljaF9iYWJlbHRyYWNlIFtmaWxlX2NvbnRl bnRzICJiYWJlbHRyYWNlLndoaWNoIl0KKyAgICByZW1vdGVfZmlsZSBidWls ZCBkZWxldGUgImJhYmVsdHJhY2Uud2hpY2giCisgICAgcmVtb3RlX2ZpbGUg aG9zdCBkZWxldGUgImJhYmVsdHJhY2Uud2hpY2giCit9IGVsc2UgeworICAg IHNldCB3aGljaF9iYWJlbHRyYWNlIFt3aGljaCBiYWJlbHRyYWNlXQorfQor CitpZiB7ICR3aGljaF9iYWJlbHRyYWNlID09IDAgfSB0aGVuIHsKKyAgICB1 bnN1cHBvcnRlZCAiYmFiZWx0cmFjZSBjaGVjayBjdGYgZGlyZWN0b3J5Igor fSBlbHNlIHsKKyAgICAjTGV0IGJhYmVsdHJhY2Ugb3V0cHV0IGFuIGVycm9y IHRvIG1ha2Ugc3VyZSBjdXJyZW50IHdheSBpcyByaWdodC4KKyAgICBpZiBb aXNfcmVtb3RlIGhvc3RdIHRoZW4geworCXJlbW90ZV9leGVjIGhvc3QgIiR3 aGljaF9iYWJlbHRyYWNlIG5vdF9leGlzdCA8IC9kZXYvbnVsbCIgIiIgIiIg ImJhYmVsdHJhY2Uub3V0cHV0IgorCXJlbW90ZV91cGxvYWQgaG9zdCAiYmFi ZWx0cmFjZS5vdXRwdXQiCisJc2V0IGJhYmVsdHJhY2Vfb3V0cHV0IFtmaWxl X2NvbnRlbnRzICJiYWJlbHRyYWNlLm91dHB1dCJdCisJcmVtb3RlX2ZpbGUg YnVpbGQgZGVsZXRlICJiYWJlbHRyYWNlLm91dHB1dCIKKwlyZW1vdGVfZmls ZSBob3N0IGRlbGV0ZSAiYmFiZWx0cmFjZS5vdXRwdXQiCisgICAgfSBlbHNl IHsKKwljYXRjaCAiZXhlYyAkd2hpY2hfYmFiZWx0cmFjZSBub3RfZXhpc3Qg PCAvZGV2L251bGwiIGJhYmVsdHJhY2Vfb3V0cHV0CisgICAgfQorICAgIGlm IHsgW3N0cmluZyBsYXN0ICJcW2Vycm9yXF0iICRiYWJlbHRyYWNlX291dHB1 dF0gPT0gLTEgfSB0aGVuIHsKKwl1bnN1cHBvcnRlZCAiYmFiZWx0cmFjZSBj aGVjayBjdGYgZGlyZWN0b3J5IgorICAgIH0gZWxzZSB7CisJaWYgW2lzX3Jl bW90ZSBob3N0XSB0aGVuIHsKKwkgICAgcmVtb3RlX2V4ZWMgaG9zdCAiJHdo aWNoX2JhYmVsdHJhY2UgJGN0ZmRpciA8IC9kZXYvbnVsbCIgIiIgIiIgImJh YmVsdHJhY2Uub3V0cHV0IgorCSAgICByZW1vdGVfdXBsb2FkIGhvc3QgImJh YmVsdHJhY2Uub3V0cHV0IgorCSAgICBzZXQgYmFiZWx0cmFjZV9vdXRwdXQg W2ZpbGVfY29udGVudHMgImJhYmVsdHJhY2Uub3V0cHV0Il0KKwkgICAgcmVt b3RlX2ZpbGUgYnVpbGQgZGVsZXRlICJiYWJlbHRyYWNlLm91dHB1dCIKKwkg ICAgcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgImJhYmVsdHJhY2Uub3V0cHV0 IgorCX0gZWxzZSB7CisJICAgIGNhdGNoICJleGVjICR3aGljaF9iYWJlbHRy YWNlICRjdGZkaXIgPCAvZGV2L251bGwiIGJhYmVsdHJhY2Vfb3V0cHV0CisJ fQorCWlmIHsgW3N0cmluZyBsYXN0ICJcW2Vycm9yXF0iICRiYWJlbHRyYWNl X291dHB1dF0gIT0gLTEgfSB0aGVuIHsKKwkgICAgZmFpbCAiYmFiZWx0cmFj ZSBvcGVuIGN0ZiBkaXJlY3RvcnkiCisJfQorICAgIH0KK30KKworCisjVGVz dCAidGFyZ2V0IGN0ZiIKK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGNvbmZp cm0gb2ZmIgorZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJraWxsIgorZ2RiX3Rlc3Rf bXVsdGlwbGUgInRhcmdldCBjdGYgJGN0ZmRpciIgIiIgeworICAgIC1yZSAi VW5kZWZpbmVkIHRhcmdldCBjb21tYW5kOiBcImN0ZiBjdGZcLmN0ZlwiXC4g IFRyeSBcImhlbHAgdGFyZ2V0XCJcLiIgeworCXVuc3VwcG9ydGVkICJ0YXJn ZXQgZG9lcyBub3Qgc3VwcG9ydCBjdGYiCisJcmVtb3RlX2V4ZWMgaG9zdCAi cm0gLXJmICRjdGZkaXIiCisJcmV0dXJuIC0xOworICAgIH0KKyAgICAtcmUg Ii4qZmFpbC4qIiB7CisJZmFpbCAidGFyZ2V0IGN0ZiAkY3RmZGlyIgorICAg IH0KKyAgICAtcmUgIl4kIiB7CisgICAgICAgIHBhc3MgInRhcmdldCBjdGYg JGN0ZmRpciIKKyAgICB9Cit9CisKK2dkYl90ZXN0ICJ0ZmluZCAwIiAiLipG b3VuZCB0cmFjZSBmcmFtZSAwLioiICJ0YXJnZXQgY3RmIHRmaW5kIDAiCitn ZGJfdGVzdCAidGR1bXAiICIuKmIgPSAxLiphID0gMC4qaSA9IDAuKiIgImZp cnN0IHRhcmdldCBjdGYgdGR1bXAiCitnZGJfdGVzdCAicHJpbnQgXCRiIiAi LiogPSAxLioiICJmaXJzdCB0YXJnZXQgY3RmIHByaW50IFwkYiIKK2dkYl90 ZXN0ICJwcmludCBcJGEiICIuKiA9IDAuKiIgImZpcnN0IHRhcmdldCBjdGYg cHJpbnQgXCRhIgorZ2RiX3Rlc3QgInByaW50IFwkaSIgIi4qID0gMC4qIiAi Zmlyc3QgdGFyZ2V0IGN0ZiBwcmludCBcJGkiCisKK2dkYl90ZXN0ICJ0Zmlu ZCAxIiAiLipGb3VuZCB0cmFjZSBmcmFtZSAxLioiICJ0YXJnZXQgY3RmIHRm aW5kIDEiCisKK2dkYl90ZXN0ICJ0ZmluZCAyIiAiLipGb3VuZCB0cmFjZSBm cmFtZSAyLioiICJ0YXJnZXQgY3RmIHRmaW5kIDIiCitnZGJfdGVzdCAidGR1 bXAiICIuKmIgPSAyLiphID0gMS4qaSA9IDEuKiIgInNlY29uZCB0YXJnZXQg Y3RmIHRkdW1wIgorZ2RiX3Rlc3QgInByaW50IFwkYiIgIi4qID0gMi4qIiAi c2Vjb25kIHRhcmdldCBjdGYgcHJpbnQgXCRiIgorZ2RiX3Rlc3QgInByaW50 IFwkYSIgIi4qID0gMS4qIiAic2Vjb25kIHRhcmdldCBjdGYgcHJpbnQgXCRh IgorZ2RiX3Rlc3QgInByaW50IFwkaSIgIi4qID0gMS4qIiAic2Vjb25kIHRh cmdldCBjdGYgcHJpbnQgXCRpIgorCisKKyNDbGVhbgorCityZW1vdGVfZXhl YyBob3N0ICJybSAtcmYgJGN0ZmRpciIK --f46d044469ad10466704d351ede7--