From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23829 invoked by alias); 16 Jan 2013 07:39:20 -0000 Received: (qmail 23613 invoked by uid 22791); 16 Jan 2013 07:39:18 -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-f54.google.com (HELO mail-oa0-f54.google.com) (209.85.219.54) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 16 Jan 2013 07:38:46 +0000 Received: by mail-oa0-f54.google.com with SMTP id n9so1088560oag.27 for ; Tue, 15 Jan 2013 23:38:46 -0800 (PST) X-Received: by 10.182.54.103 with SMTP id i7mr95196obp.62.1358321926066; Tue, 15 Jan 2013 23:38:46 -0800 (PST) MIME-Version: 1.0 Received: by 10.60.84.5 with HTTP; Tue, 15 Jan 2013 23:38:05 -0800 (PST) In-Reply-To: <50F55E11.40008@codesourcery.com> References: <50F3ADB8.1000603@codesourcery.com> <50F55E11.40008@codesourcery.com> From: Hui Zhu Date: Wed, 16 Jan 2013 07:39:00 -0000 Message-ID: Subject: Re: [PATCH] Add CTF support to GDB [5] Add test for CTF function To: Yao Qi Cc: Joel Brobecker , gdb-patches ml , Tom Tromey Content-Type: multipart/mixed; boundary=14dae93a113de4d3f604d362f70d 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/msg00327.txt.bz2 --14dae93a113de4d3f604d362f70d Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 4116 On Tue, Jan 15, 2013 at 9:48 PM, Yao Qi wrote: > On 01/15/2013 07:18 PM, Hui Zhu wrote: >> >> +#Get the pathname of babeltrace and set it to $which_babeltrace. >> +#If host doesn't have babeltrace, $which_babeltrace will set to 0. >> +if [is_remote host] then { >> + remote_exec host "which babeltrace" "" "" "babeltrace.which" >> + remote_upload host "babeltrace.which" >> + set which_babeltrace [file_contents "babeltrace.which"] > > > proc file_contents is not defined. > > FAIL: gdb.trace/ctf.exp: tsave -ctf ctf.ctf > ERROR: (DejaGnu) proc "file_contents babeltrace.which" does not exist. > The error code is NONE > The info on the error is: > invalid command name "file_contents" > while executing > "::tcl_unknown file_contents babeltrace.which" > ("uplevel" body line 1) > invoked from within > "uplevel 1 ::tcl_unknown $args" > > You can run this test case in a remote-host setting in this way, > > $ make check RUNTESTFLAGS=3D'--target_board=3Dnative-gdbserver > --host_board=3Dlocal-remote-host ctf.exp' I add a file_contents in ctf.exp. Not sure why my part can running without define "file_contents" inside ctf.exp. > >> + remote_file build delete "babeltrace.which" >> + remote_file host delete "babeltrace.which" >> +} else { >> + set which_babeltrace [which babeltrace] >> +} >> + >> +if { $which_babeltrace =3D=3D 0 } then { >> >> + unsupported "babeltrace check ctf directory" >> +} else { >> + #Let babeltrace output an error to make sure current way is right. >> + if [is_remote host] then { >> + remote_exec host "$which_babeltrace not_exist < /dev/null" "" "" >> "babeltrace.output" >> + remote_upload host "babeltrace.output" >> + set babeltrace_output [file_contents "babeltrace.output"] >> + remote_file build delete "babeltrace.output" >> + remote_file host delete "babeltrace.output" >> + } else { >> + catch "exec $which_babeltrace not_exist < /dev/null" >> babeltrace_output >> + } >> + if { [string last "\[error\]" $babeltrace_output] =3D=3D -1 } then { >> >> + unsupported "babeltrace check ctf directory" >> + } else { >> + if [is_remote host] then { >> + remote_exec host "$which_babeltrace $ctfdir < /dev/null" "" = "" >> "babeltrace.output" >> + remote_upload host "babeltrace.output" >> + set babeltrace_output [file_contents "babeltrace.output"] >> + remote_file build delete "babeltrace.output" >> + remote_file host delete "babeltrace.output" >> + } else { >> + catch "exec $which_babeltrace $ctfdir < /dev/null" >> babeltrace_output >> + } >> + if { [string last "\[error\]" $babeltrace_output] !=3D -1 } then= { >> >> + fail "babeltrace open ctf directory" >> + } >> + } >> +} >> + > > > These code looks overkill to me. What we want to do here is to run > babeltrace on host. Maybe we can do something simpler, > > remote_exec host "babeltrace $ctfdir < /dev/null" "" "" "output" > remote_upload host "output" > # Then check the content in file "output" to see 1) babeltrace exists, = 2) > the result of execution. If use test: make check RUNTESTFLAGS=3D"--target_board=3Dnative-gdbserver ctf.exp" remote_exec host "babeltrace $ctfdir < /dev/null" "" "" "output" will get error. I think that is why gas_version have "if [is_remote host]" for that. > >> + >> +#Test "target ctf" >> +gdb_test_no_output "set confirm off" >> +gdb_test_no_output "kill" >> +gdb_test_multiple "target ctf $ctfdir" "" { >> + -re "Undefined target command: \"ctf ctf\.ctf\"\. Try \"help >> target\"\." { >> + unsupported "target does not support ctf" >> + remote_exec host "rm -rf $ctfdir" >> + return -1; >> + } >> + -re ".*fail.*" { >> + fail "target ctf $ctfdir" >> + } >> + -re "^$" { >> + pass "target ctf $ctfdir" >> + } >> +} > > > Please add ".*\r\n$gdb_prompt $" at the end of each pattern to be matched= to > avoid racing. Fixed. > > -- > Yao (=E9=BD=90=E5=B0=A7) Post a new version. Thanks, Hui --14dae93a113de4d3f604d362f70d 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_hc05ryx50 Content-length: 9443 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 dHN1aXRlL2dkYi50cmFjZS9jdGYuZXhwCkBAIC0wLDAgKzEsMTQ3IEBACisj ICAgQ29weXJpZ2h0IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCitsb2FkX2xpYiAidHJhY2Utc3Vw cG9ydC5leHAiOworCitwcm9jIGZpbGVfY29udGVudHMgeyBmaWxlbmFtZSB9 IHsKKyAgICBzZXQgZmlsZSBbb3BlbiAkZmlsZW5hbWUgcl0KKyAgICBzZXQg Y29udGVudHMgW3JlYWQgJGZpbGVdCisgICAgY2xvc2UgJGZpbGUKKyAgICBy ZXR1cm4gJGNvbnRlbnRzCit9CisKK3N0YW5kYXJkX3Rlc3RmaWxlCitzZXQg ZXhlY3V0YWJsZSAkdGVzdGZpbGUKK3NldCBleHBmaWxlICR0ZXN0ZmlsZS5l eHAKK3NldCBjdGZkaXIgJHRlc3RmaWxlLmN0ZgorCitpZiBbcHJlcGFyZV9m b3JfdGVzdGluZyAkZXhwZmlsZSAkZXhlY3V0YWJsZSAkc3JjZmlsZSBcCisg ICAgICAgIHtkZWJ1ZyBub3dhcm5pbmdzfV0geworICAgIHVudGVzdGVkICJm YWlsZWQgdG8gcHJlcGFyZSBmb3IgdHJhY2UgdGVzdHMiCisgICAgcmV0dXJu IC0xCit9CisKK2lmICFbcnVudG9fbWFpbl0geworICAgIGZhaWwgImNhbid0 IHJ1biB0byBtYWluIHRvIGNoZWNrIGZvciB0cmFjZSBzdXBwb3J0IgorICAg IHJldHVybiAtMQorfQorCitpZiAhW2dkYl90YXJnZXRfc3VwcG9ydHNfdHJh Y2VdIHsKKyAgICB1bnN1cHBvcnRlZCAidGFyZ2V0IGRvZXMgbm90IHN1cHBv cnQgdHJhY2UiCisgICAgcmV0dXJuIC0xOworfQorCisKKyNUZXN0ICJ0c2F2 ZSAtY3RmIgorCitzZXQgdHJhY2VfbG9jYXRpb24xIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJzZXQgdHJhY2Vwb2ludCAxIGhlcmUiXQorZ2RiX3Rlc3QgInRy YWNlICR0cmFjZV9sb2NhdGlvbjEiICJUcmFjZXBvaW50ICR7ZGVjaW1hbH0g YXQgLioiCitnZGJfdHJhY2Vfc2V0YWN0aW9ucyAic2V0IGFjdGlvbiBmb3Ig bGluZSAkdHJhY2VfbG9jYXRpb24xIiAiIiBcCisJImNvbGxlY3QgXCRsb2Nh bCIgIl4kIgorCitzZXQgdHJhY2VfbG9jYXRpb24yIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJzZXQgdHJhY2Vwb2ludCAyIGhlcmUiXQorZ2RiX3Rlc3QgInRy YWNlICR0cmFjZV9sb2NhdGlvbjIiICJUcmFjZXBvaW50ICR7ZGVjaW1hbH0g YXQgLioiCitnZGJfdHJhY2Vfc2V0YWN0aW9ucyAic2V0IGFjdGlvbiBmb3Ig bGluZSAkdHJhY2VfbG9jYXRpb24yIiAiIiBcCisJImNvbGxlY3QgXCRyZWci ICJeJCIKKworZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJ0c3RhcnQiCisKK3NldCBi cmVha19lbmQgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50 IGVuZCBoZXJlIl0KK2dkYl90ZXN0ICJicmVhayAkYnJlYWtfZW5kIiAiQnJl YWtwb2ludCAke2RlY2ltYWx9IGF0IC4qIgorCitnZGJfdGVzdCAiY29udGlu dWUiICJDb250aW51aW5nXFwuXFsgXHJcblxdK0JyZWFrcG9pbnQuKiIKK2dk Yl90ZXN0X25vX291dHB1dCAidHN0b3AiCisKK2dkYl90ZXN0ICJ0c2F2ZSAt Y3RmICRjdGZkaXIiICJUcmFjZSBkYXRhIHNhdmVkIHRvIGRpcmVjdG9yeSBc JyRjdGZkaXJcJy4iCisKKyNHZXQgdGhlIHBhdGhuYW1lIG9mIGJhYmVsdHJh Y2UgYW5kIHNldCBpdCB0byAkd2hpY2hfYmFiZWx0cmFjZS4KKyNJZiBob3N0 IGRvZXNuJ3QgaGF2ZSBiYWJlbHRyYWNlLCAkd2hpY2hfYmFiZWx0cmFjZSB3 aWxsIHNldCB0byAwLgoraWYgW2lzX3JlbW90ZSBob3N0XSB0aGVuIHsKKyAg ICByZW1vdGVfZXhlYyBob3N0ICJ3aGljaCBiYWJlbHRyYWNlIiAiIiAiIiAi YmFiZWx0cmFjZS53aGljaCIKKyAgICByZW1vdGVfdXBsb2FkIGhvc3QgImJh YmVsdHJhY2Uud2hpY2giCisgICAgc2V0IHdoaWNoX2JhYmVsdHJhY2UgW2Zp bGVfY29udGVudHMgImJhYmVsdHJhY2Uud2hpY2giXQorICAgIHJlbW90ZV9m aWxlIGJ1aWxkIGRlbGV0ZSAiYmFiZWx0cmFjZS53aGljaCIKKyAgICByZW1v dGVfZmlsZSBob3N0IGRlbGV0ZSAiYmFiZWx0cmFjZS53aGljaCIKK30gZWxz ZSB7CisgICAgc2V0IHdoaWNoX2JhYmVsdHJhY2UgW3doaWNoIGJhYmVsdHJh Y2VdCit9CisKK2lmIHsgJHdoaWNoX2JhYmVsdHJhY2UgPT0gMCB9IHRoZW4g eworICAgIHVuc3VwcG9ydGVkICJiYWJlbHRyYWNlIGNoZWNrIGN0ZiBkaXJl Y3RvcnkiCit9IGVsc2UgeworICAgICNMZXQgYmFiZWx0cmFjZSBvdXRwdXQg YW4gZXJyb3IgdG8gbWFrZSBzdXJlIGN1cnJlbnQgd2F5IGlzIHJpZ2h0Lgor ICAgIGlmIFtpc19yZW1vdGUgaG9zdF0gdGhlbiB7CisJcmVtb3RlX2V4ZWMg aG9zdCAiJHdoaWNoX2JhYmVsdHJhY2Ugbm90X2V4aXN0IDwgL2Rldi9udWxs IiAiIiAiIiAiYmFiZWx0cmFjZS5vdXRwdXQiCisJcmVtb3RlX3VwbG9hZCBo b3N0ICJiYWJlbHRyYWNlLm91dHB1dCIKKwlzZXQgYmFiZWx0cmFjZV9vdXRw dXQgW2ZpbGVfY29udGVudHMgImJhYmVsdHJhY2Uub3V0cHV0Il0KKwlyZW1v dGVfZmlsZSBidWlsZCBkZWxldGUgImJhYmVsdHJhY2Uub3V0cHV0IgorCXJl bW90ZV9maWxlIGhvc3QgZGVsZXRlICJiYWJlbHRyYWNlLm91dHB1dCIKKyAg ICB9IGVsc2UgeworCWNhdGNoICJleGVjICR3aGljaF9iYWJlbHRyYWNlIG5v dF9leGlzdCA8IC9kZXYvbnVsbCIgYmFiZWx0cmFjZV9vdXRwdXQKKyAgICB9 CisgICAgaWYgeyBbc3RyaW5nIGxhc3QgIlxbZXJyb3JcXSIgJGJhYmVsdHJh Y2Vfb3V0cHV0XSA9PSAtMSB9IHRoZW4geworCXVuc3VwcG9ydGVkICJiYWJl bHRyYWNlIGNoZWNrIGN0ZiBkaXJlY3RvcnkiCisgICAgfSBlbHNlIHsKKwlp ZiBbaXNfcmVtb3RlIGhvc3RdIHRoZW4geworCSAgICByZW1vdGVfZXhlYyBo b3N0ICIkd2hpY2hfYmFiZWx0cmFjZSAkY3RmZGlyIDwgL2Rldi9udWxsIiAi IiAiIiAiYmFiZWx0cmFjZS5vdXRwdXQiCisJICAgIHJlbW90ZV91cGxvYWQg aG9zdCAiYmFiZWx0cmFjZS5vdXRwdXQiCisJICAgIHNldCBiYWJlbHRyYWNl X291dHB1dCBbZmlsZV9jb250ZW50cyAiYmFiZWx0cmFjZS5vdXRwdXQiXQor CSAgICByZW1vdGVfZmlsZSBidWlsZCBkZWxldGUgImJhYmVsdHJhY2Uub3V0 cHV0IgorCSAgICByZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAiYmFiZWx0cmFj ZS5vdXRwdXQiCisJfSBlbHNlIHsKKwkgICAgY2F0Y2ggImV4ZWMgJHdoaWNo X2JhYmVsdHJhY2UgJGN0ZmRpciA8IC9kZXYvbnVsbCIgYmFiZWx0cmFjZV9v dXRwdXQKKwl9CisJaWYgeyBbc3RyaW5nIGxhc3QgIlxbZXJyb3JcXSIgJGJh YmVsdHJhY2Vfb3V0cHV0XSAhPSAtMSB9IHRoZW4geworCSAgICBmYWlsICJi YWJlbHRyYWNlIG9wZW4gY3RmIGRpcmVjdG9yeSIKKwl9CisgICAgfQorfQor CisKKyNUZXN0ICJ0YXJnZXQgY3RmIgorZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJz ZXQgY29uZmlybSBvZmYiCitnZGJfdGVzdF9ub19vdXRwdXQgImtpbGwiCitn ZGJfdGVzdF9tdWx0aXBsZSAidGFyZ2V0IGN0ZiAkY3RmZGlyIiAiIiB7Cisg ICAgLXJlICJVbmRlZmluZWQgdGFyZ2V0IGNvbW1hbmQ6IFwiY3RmIGN0Zlwu Y3RmXCJcLiAgVHJ5IFwiaGVscCB0YXJnZXRcIlwuXHJcbiRnZGJfcHJvbXB0 ICQiIHsKKwl1bnN1cHBvcnRlZCAidGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQg Y3RmIgorCXJlbW90ZV9leGVjIGhvc3QgInJtIC1yZiAkY3RmZGlyIgorCXJl dHVybiAtMTsKKyAgICB9CisgICAgLXJlICIuKmZhaWwuKlxyXG4kZ2RiX3By b21wdCAkIiB7CisJZmFpbCAidGFyZ2V0IGN0ZiAkY3RmZGlyIgorICAgIH0K KyAgICAtcmUgIlxyXG4kZ2RiX3Byb21wdCAkIiB7CisgICAgICAgIHBhc3Mg InRhcmdldCBjdGYgJGN0ZmRpciIKKyAgICB9Cit9CisKK2dkYl90ZXN0ICJ0 ZmluZCAwIiAiLipGb3VuZCB0cmFjZSBmcmFtZSAwLioiICJ0YXJnZXQgY3Rm IHRmaW5kIDAiCitnZGJfdGVzdCAidGR1bXAiICIuKmIgPSAxLiphID0gMC4q aSA9IDAuKiIgImZpcnN0IHRhcmdldCBjdGYgdGR1bXAiCitnZGJfdGVzdCAi cHJpbnQgXCRiIiAiLiogPSAxLioiICJmaXJzdCB0YXJnZXQgY3RmIHByaW50 IFwkYiIKK2dkYl90ZXN0ICJwcmludCBcJGEiICIuKiA9IDAuKiIgImZpcnN0 IHRhcmdldCBjdGYgcHJpbnQgXCRhIgorZ2RiX3Rlc3QgInByaW50IFwkaSIg Ii4qID0gMC4qIiAiZmlyc3QgdGFyZ2V0IGN0ZiBwcmludCBcJGkiCisKK2dk Yl90ZXN0ICJ0ZmluZCAxIiAiLipGb3VuZCB0cmFjZSBmcmFtZSAxLioiICJ0 YXJnZXQgY3RmIHRmaW5kIDEiCisKK2dkYl90ZXN0ICJ0ZmluZCAyIiAiLipG b3VuZCB0cmFjZSBmcmFtZSAyLioiICJ0YXJnZXQgY3RmIHRmaW5kIDIiCitn ZGJfdGVzdCAidGR1bXAiICIuKmIgPSAyLiphID0gMS4qaSA9IDEuKiIgInNl Y29uZCB0YXJnZXQgY3RmIHRkdW1wIgorZ2RiX3Rlc3QgInByaW50IFwkYiIg Ii4qID0gMi4qIiAic2Vjb25kIHRhcmdldCBjdGYgcHJpbnQgXCRiIgorZ2Ri X3Rlc3QgInByaW50IFwkYSIgIi4qID0gMS4qIiAic2Vjb25kIHRhcmdldCBj dGYgcHJpbnQgXCRhIgorZ2RiX3Rlc3QgInByaW50IFwkaSIgIi4qID0gMS4q IiAic2Vjb25kIHRhcmdldCBjdGYgcHJpbnQgXCRpIgorCisKKyNDbGVhbgor CityZW1vdGVfZXhlYyBob3N0ICJybSAtcmYgJGN0ZmRpciIK --14dae93a113de4d3f604d362f70d--