From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32151 invoked by alias); 29 Mar 2013 08:02:21 -0000 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 Received: (qmail 32098 invoked by uid 89); 29 Mar 2013 08:02:03 -0000 X-Spam-SWARE-Status: No, score=-4.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_EG autolearn=ham version=3.3.1 Received: from mail-ob0-f171.google.com (HELO mail-ob0-f171.google.com) (209.85.214.171) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 29 Mar 2013 08:01:59 +0000 Received: by mail-ob0-f171.google.com with SMTP id x4so232334obh.30 for ; Fri, 29 Mar 2013 01:01:58 -0700 (PDT) X-Received: by 10.60.1.34 with SMTP id 2mr550560oej.47.1364544118293; Fri, 29 Mar 2013 01:01:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.60.13.133 with HTTP; Fri, 29 Mar 2013 01:01:18 -0700 (PDT) In-Reply-To: <83y5d7wpvq.fsf@gnu.org> References: <515451EA.1000200@mentor.com> <83y5d7wpvq.fsf@gnu.org> From: Hui Zhu Date: Fri, 29 Mar 2013 16:12:00 -0000 Message-ID: Subject: Re: [PATCH] add -s option to make -break-insert support dprintf To: Eli Zaretskii Cc: Hui Zhu , gdb-patches@sourceware.org, marc.khouzam@ericsson.com Content-Type: multipart/mixed; boundary=e89a8fb1fa10738b4a04d90bafd3 X-Virus-Found: No X-SW-Source: 2013-03/txt/msg01103.txt.bz2 --e89a8fb1fa10738b4a04d90bafd3 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2902 Hi Eli, Thanks for your review. On Thu, Mar 28, 2013 at 10:38 PM, Eli Zaretskii wrote: >> Date: Thu, 28 Mar 2013 22:21:30 +0800 >> From: Hui Zhu >> CC: Marc Khouzam , Eli Zaretskii >> >> This is the patches to add -s flags to make -break-info support dprintf. >> mi-dprintf.txt is for the code. >> mi-dprintf-doc.txt is for the doc. >> mi-dprintf-test.txt is for the test. >> >> After this patch, you can use -s option to add dprintf. To see mi-dprintf-doc.txt to get info about how to use this function. > > Thanks. > >> This is for NEWS: >> ** The -s of MI command -break-insert can set a dynamic printf. > > "The new option -s of the MI command -break-insert sets a dynamic > printf breakpoint." Thanks. I will use it. > >> 2013-03-28 Hui Zhu >> >> * gdb.texinfo (GDB/MI Breakpoint Commands): Add "-s". > ^^^^^^^^ > "Describe the -s option." > >> --- a/doc/gdb.texinfo >> +++ b/doc/gdb.texinfo >> @@ -28784,7 +28784,9 @@ N.A. >> @smallexample >> -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ] >> [ -c @var{condition} ] [ -i @var{ignore-count} ] >> - [ -p @var{thread-id} ] [ @var{location} ] >> + [ -p @var{thread-id} ] >> + [ -s "@var{template},@var{expression}[,@var{expression}@dots{}]" ] >> + [ @var{location} ] >> @end smallexample >> >> @noindent >> @@ -28824,6 +28826,29 @@ Make the breakpoint conditional on @var{ >> Initialize the @var{ignore-count}. >> @item -p @var{thread-id} >> Restrict the breakpoint to the specified @var{thread-id}. >> +@item -s "@var{location},@var{template},@var{expression}[,@var{expression}@dots{}]" > > The format of the -s argument in @item is different from the format in > the @smallexample above. Which one is correct? Oops, the @item is wrong. It is fixed now. > >> +Set a @ref{Dynamic Printf}. > > Please don't use @ref as if it were an HTML " not. This produces ugly Info output. Please use this style instead: > > Set a dynamic printf breakpoint (@pxref{Dynamic Printf}). > > or this: > > Set a dynamic printf breakpoint, described in @ref{Dynamic Printf}. > Fixed. Post a new version according to your comments. Thanks, Hui ** The new option -s of the MI command -break-insert sets a dynamic printf breakpoint. 2013-03-29 Hui Zhu * breakpoint.c (dprintf_breakpoint_ops): Remove its static. * breakpoint.h (dprintf_breakpoint_ops): Add extern. * mi/mi-cmd-break.c (mi_cmd_break_insert): Describe the "-s" option. 2013-03-29 Hui Zhu * gdb.texinfo (GDB/MI Breakpoint Commands): Describe the "-s" option. 2013-03-29 Hui Zhu * gdb.mi/Makefile.in (PROGS): Add "mi-dprintf". * gdb.mi/mi-dprintf.c, gdb.mi/mi-dprintf.h: New. --e89a8fb1fa10738b4a04d90bafd3 Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf.txt" Content-Disposition: attachment; filename="mi-dprintf.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hev2ap2x0 Content-length: 3660 LS0tIGEvYnJlYWtwb2ludC5jCisrKyBiL2JyZWFrcG9pbnQuYwpAQCAtMzA1 LDcgKzMwNSw3IEBAIHN0cnVjdCBicmVha3BvaW50X29wcyBia3B0X2JyZWFr cG9pbnRfb3AKIHN0YXRpYyBzdHJ1Y3QgYnJlYWtwb2ludF9vcHMgYmtwdF9w cm9iZV9icmVha3BvaW50X29wczsKIAogLyogRHluYW1pYyBwcmludGYgY2xh c3MgdHlwZS4gICovCi1zdGF0aWMgc3RydWN0IGJyZWFrcG9pbnRfb3BzIGRw cmludGZfYnJlYWtwb2ludF9vcHM7CitzdHJ1Y3QgYnJlYWtwb2ludF9vcHMg ZHByaW50Zl9icmVha3BvaW50X29wczsKIAogLyogVGhlIHN0eWxlIGluIHdo aWNoIHRvIHBlcmZvcm0gYSBkeW5hbWljIHByaW50Zi4gIFRoaXMgaXMgYSB1 c2VyCiAgICBvcHRpb24gYmVjYXVzZSBkaWZmZXJlbnQgb3V0cHV0IG9wdGlv bnMgaGF2ZSBkaWZmZXJlbnQgdHJhZGVvZmZzOwotLS0gYS9icmVha3BvaW50 LmgKKysrIGIvYnJlYWtwb2ludC5oCkBAIC0xMjExLDYgKzEyMTEsNyBAQCBl eHRlcm4gdm9pZCB0YnJlYWtfY29tbWFuZCAoY2hhciAqLCBpbnQpCiBleHRl cm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJhc2VfYnJlYWtwb2ludF9vcHM7 CiBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJrcHRfYnJlYWtwb2lu dF9vcHM7CiBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIHRyYWNlcG9p bnRfYnJlYWtwb2ludF9vcHM7CitleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRf b3BzIGRwcmludGZfYnJlYWtwb2ludF9vcHM7CiAKIGV4dGVybiB2b2lkIGlu aXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpOwogCi0tLSBhL21pL21p LWNtZC1icmVhay5jCisrKyBiL21pL21pLWNtZC1icmVhay5jCkBAIC05OSwx NSArOTksMTcgQEAgbWlfY21kX2JyZWFrX2luc2VydCAoY2hhciAqY29tbWFu ZCwgY2hhcgogICBpbnQgcGVuZGluZyA9IDA7CiAgIGludCBlbmFibGVkID0g MTsKICAgaW50IHRyYWNlcG9pbnQgPSAwOworICBpbnQgZHByaW50ZiA9IDA7 CiAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogICBlbnVtIGJwdHlwZSB0 eXBlX3dhbnRlZDsKICAgc3RydWN0IGJyZWFrcG9pbnRfb3BzICpvcHM7Cisg IGNoYXIgKmV4dHJhX3N0cmluZyA9IE5VTEw7CiAKICAgZW51bSBvcHQKICAg ICB7CiAgICAgICBIQVJEV0FSRV9PUFQsIFRFTVBfT1BULCBDT05ESVRJT05f T1BULAogICAgICAgSUdOT1JFX0NPVU5UX09QVCwgVEhSRUFEX09QVCwgUEVO RElOR19PUFQsIERJU0FCTEVfT1BULAotICAgICAgVFJBQ0VQT0lOVF9PUFQs CisgICAgICBUUkFDRVBPSU5UX09QVCwgRFBSSU5URl9PUFQsCiAgICAgfTsK ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaV9vcHQgb3B0c1tdID0KICAgewpA QCAtMTE5LDYgKzEyMSw3IEBAIG1pX2NtZF9icmVha19pbnNlcnQgKGNoYXIg KmNvbW1hbmQsIGNoYXIKICAgICB7ImYiLCBQRU5ESU5HX09QVCwgMH0sCiAg ICAgeyJkIiwgRElTQUJMRV9PUFQsIDB9LAogICAgIHsiYSIsIFRSQUNFUE9J TlRfT1BULCAwfSwKKyAgICB7InMiLCBEUFJJTlRGX09QVCwgMX0sCiAgICAg eyAwLCAwLCAwIH0KICAgfTsKIApAQCAtMTU5LDkgKzE2MiwxNSBAQCBtaV9j bWRfYnJlYWtfaW5zZXJ0IChjaGFyICpjb21tYW5kLCBjaGFyCiAJY2FzZSBU UkFDRVBPSU5UX09QVDoKIAkgIHRyYWNlcG9pbnQgPSAxOwogCSAgYnJlYWs7 CisJY2FzZSBEUFJJTlRGX09QVDoKKwkgIGV4dHJhX3N0cmluZyA9IG9hcmc7 CisJICBkcHJpbnRmID0gMTsKKwkgIGJyZWFrOwogCX0KICAgICB9CiAKKyAg aWYgKGhhcmR3YXJlICYmIGRwcmludGYpCisgICAgZXJyb3IgKF8oIi1icmVh ay1pbnNlcnQ6IC1oIGFuZCAtcyBjYW5ub3QgYmUgdXNlIHRvZ2V0aGVyIikp OwogICBpZiAob2luZCA+PSBhcmdjKQogICAgIGVycm9yIChfKCItYnJlYWst aW5zZXJ0OiBNaXNzaW5nIDxsb2NhdGlvbj4iKSk7CiAgIGlmIChvaW5kIDwg YXJnYyAtIDEpCkBAIC0xODAsMTEgKzE4OSwxNCBAQCBtaV9jbWRfYnJlYWtf aW5zZXJ0IChjaGFyICpjb21tYW5kLCBjaGFyCiAgICAgIHJlZ3VsYXIgbm9u LWp1bXAgYmFzZWQgdHJhY2Vwb2ludHMuICAqLwogICB0eXBlX3dhbnRlZCA9 ICh0cmFjZXBvaW50CiAJCSA/IChoYXJkd2FyZSA/IGJwX2Zhc3RfdHJhY2Vw b2ludCA6IGJwX3RyYWNlcG9pbnQpCi0JCSA6IChoYXJkd2FyZSA/IGJwX2hh cmR3YXJlX2JyZWFrcG9pbnQgOiBicF9icmVha3BvaW50KSk7Ci0gIG9wcyA9 IHRyYWNlcG9pbnQgPyAmdHJhY2Vwb2ludF9icmVha3BvaW50X29wcyA6ICZi a3B0X2JyZWFrcG9pbnRfb3BzOworCQkgOiAoaGFyZHdhcmUgPyBicF9oYXJk d2FyZV9icmVha3BvaW50CisJCSAgICA6IChkcHJpbnRmID8gYnBfZHByaW50 ZiA6IGJwX2JyZWFrcG9pbnQpKSk7CisgIG9wcyA9IHRyYWNlcG9pbnQgPyAm dHJhY2Vwb2ludF9icmVha3BvaW50X29wcworCQkgICA6IChkcHJpbnRmID8g JmRwcmludGZfYnJlYWtwb2ludF9vcHMKKwkJCSAgICAgIDogJmJrcHRfYnJl YWtwb2ludF9vcHMpOwogCiAgIGNyZWF0ZV9icmVha3BvaW50IChnZXRfY3Vy cmVudF9hcmNoICgpLCBhZGRyZXNzLCBjb25kaXRpb24sIHRocmVhZCwKLQkJ ICAgICBOVUxMLAorCQkgICAgIGV4dHJhX3N0cmluZywKIAkJICAgICAwIC8q IGNvbmRpdGlvbiBhbmQgdGhyZWFkIGFyZSB2YWxpZC4gICovLAogCQkgICAg IHRlbXBfcCwgdHlwZV93YW50ZWQsCiAJCSAgICAgaWdub3JlX2NvdW50LAo= --e89a8fb1fa10738b4a04d90bafd3 Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf-doc.txt" Content-Disposition: attachment; filename="mi-dprintf-doc.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hev2ap321 Content-length: 2201 LS0tIGEvZG9jL2dkYi50ZXhpbmZvCisrKyBiL2RvYy9nZGIudGV4aW5mbwpA QCAtMjg3ODQsNyArMjg3ODQsOSBAQCBOLkEuCiBAc21hbGxleGFtcGxlCiAg LWJyZWFrLWluc2VydCBbIC10IF0gWyAtaCBdIFsgLWYgXSBbIC1kIF0gWyAt YSBdCiAgICAgWyAtYyBAdmFye2NvbmRpdGlvbn0gXSBbIC1pIEB2YXJ7aWdu b3JlLWNvdW50fSBdCi0gICAgWyAtcCBAdmFye3RocmVhZC1pZH0gXSBbIEB2 YXJ7bG9jYXRpb259IF0KKyAgICBbIC1wIEB2YXJ7dGhyZWFkLWlkfSBdCisg ICAgWyAtcyAiQHZhcnt0ZW1wbGF0ZX0sQHZhcntleHByZXNzaW9ufVssQHZh cntleHByZXNzaW9ufUBkb3Rze31dIiBdCisgICAgWyBAdmFye2xvY2F0aW9u fSBdCiBAZW5kIHNtYWxsZXhhbXBsZQogCiBAbm9pbmRlbnQKQEAgLTI4ODI0 LDYgKzI4ODI2LDI5IEBAIE1ha2UgdGhlIGJyZWFrcG9pbnQgY29uZGl0aW9u YWwgb24gQHZhcnsKIEluaXRpYWxpemUgdGhlIEB2YXJ7aWdub3JlLWNvdW50 fS4KIEBpdGVtIC1wIEB2YXJ7dGhyZWFkLWlkfQogUmVzdHJpY3QgdGhlIGJy ZWFrcG9pbnQgdG8gdGhlIHNwZWNpZmllZCBAdmFye3RocmVhZC1pZH0uCitA aXRlbSAtcyAiQHZhcnt0ZW1wbGF0ZX0sQHZhcntleHByZXNzaW9ufVssQHZh cntleHByZXNzaW9ufUBkb3Rze31dIgorU2V0IGEgZHluYW1pYyBwcmludGYg YnJlYWtwb2ludCwgZGVzY3JpYmVkIGluIEByZWZ7RHluYW1pYyBQcmludGZ9 LgorVGhlIEB2YXJ7bG9jYXRpb259LCBAdmFye3RlbXBsYXRlfSBhbmQgQHZh cntleHByZXNzaW9ufSBzaG91bGQgYmUKK3dpdGhpbiBkb3VibGUgcXVvdGF0 aW9ucyBhbmQgYmUgZXNjYXBlZCBieSBiZWluZyBwcmVjZWRlZCB3aXRoIGEg YmFja3NsYXNoLgorCitAc21hbGxleGFtcGxlCisoZ2RiKQorNC1icmVhay1p bnNlcnQgLXMgIlwiQXQgZm9vIGVudHJ5XFxuXCIiIGZvbworNF5kb25lLGJr cHQ9QHtudW1iZXI9IjEiLHR5cGU9ImRwcmludGYiLGRpc3A9ImtlZXAiLGVu YWJsZWQ9InkiLAorYWRkcj0iMHgwMDAwMDAwMDAwNDAwNjFiIixmdW5jPSJm b28iLGZpbGU9Im1pLWRwcmludGYuYyIsCitmdWxsbmFtZT0ibWktZHByaW50 Zi5jIixsaW5lPSIyNSIsdGhyZWFkLWdyb3Vwcz1bImkxIl0sCit0aW1lcz0i MCIsc2NyaXB0PUB7InByaW50ZiBcIkF0IGZvbyBlbnRyeVxcblwiIiwiY29u dGludWUiQH0sCitvcmlnaW5hbC1sb2NhdGlvbj0iZm9vIkB9CisoZ2RiKQor NS1icmVhay1pbnNlcnQgLXMgIlwiYXJnPSVkLCBnPSVkXFxuXCIsIGFyZywg ZyIgMjYKKzVeZG9uZSxia3B0PUB7bnVtYmVyPSIyIix0eXBlPSJkcHJpbnRm IixkaXNwPSJrZWVwIixlbmFibGVkPSJ5IiwKK2FkZHI9IjB4MDAwMDAwMDAw MDQwMDYyYSIsZnVuYz0iZm9vIixmaWxlPSJtaS1kcHJpbnRmLmMiLAorZnVs bG5hbWU9Im1pLWRwcmludGYuYyIsbGluZT0iMjYiLHRocmVhZC1ncm91cHM9 WyJpMSJdLAordGltZXM9IjAiLHNjcmlwdD1AeyJwcmludGYgXCJhcmc9JWQs IGc9JWRcXG5cIiwgYXJnLCBnIiwiY29udGludWUiQH0sCitvcmlnaW5hbC1s b2NhdGlvbj0ibWktZHByaW50Zi5jOjI2IkB9CisoZ2RiKQorQGVuZCBzbWFs bGV4YW1wbGUKKwogQGVuZCB0YWJsZQogCiBAc3Vic3ViaGVhZGluZyBSZXN1 bHQK --e89a8fb1fa10738b4a04d90bafd3 Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf-test.txt" Content-Disposition: attachment; filename="mi-dprintf-test.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hev2ap342 Content-length: 10635 LS0tIGEvdGVzdHN1aXRlL2dkYi5taS9NYWtlZmlsZS5pbgorKysgYi90ZXN0 c3VpdGUvZ2RiLm1pL01ha2VmaWxlLmluCkBAIC0zLDcgKzMsNyBAQCBzcmNk aXIgPSBAc3JjZGlyQAogCiBQUk9HUyA9IGJhc2ljcyBjX3ZhcmlhYmxlIGNw cF92YXJpYWJsZSB2YXItY21kIGR3Mi1yZWYtbWlzc2luZy1mcmFtZQlcCiAJ Z2RiNjY5LXB0aHJlYWRzIGdkYjcwMSBnZGI3OTIgbWktYXN5bmMgbWktYmFz aWNzIG1pLWJyZWFrCVwKLQltaS1jbGkgbWktY29uc29sZSBtaS1kaXNhc3Nl bWJsZSBtaS1ldmFsIG1pLWZpbGUJCVwKKwltaS1jbGkgbWktY29uc29sZSBt aS1kaXNhc3NlbWJsZSBtaS1kcHJpbnRmIG1pLWV2YWwgbWktZmlsZQlcCiAJ bWktZmlsZS10cmFuc2ZlciBtaS1ub24tc3RvcCBtaS1ub24tc3RvcC1leGl0 CQkJXAogCW1pLW5zLXN0YWxlLXJlZ2NhY2hlIG1pLW5zaW50cmFsbCBtaS1u c21vcmlidW5kIG1pLW5zdGhyZXhlYwlcCiAJbWktcGVuZGluZyBtaS1wdGhy ZWFkcyBtaS1yZWFkLW1lbW9yeSBtaS1yZWdzIG1pLXJldHVybgkJXAotLS0g L2Rldi9udWxsCisrKyBiL3Rlc3RzdWl0ZS9nZGIubWkvbWktZHByaW50Zi5j CkBAIC0wLDAgKzEsNTggQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAoQykg MjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisK K3N0YXRpYyBpbnQgZzsKKwordm9pZAorZm9vIChpbnQgYXJnKQoreworICBn ICs9IGFyZzsKKyAgZyAqPSAyOyAvKiBzZXQgZHByaW50ZiAxIGhlcmUgKi8K KyAgZyAvPSAyLjU7IC8qIHNldCBicmVha3BvaW50IDEgaGVyZSAqLworfQor CitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIGlu dCBsb2MgPSAxMjM0OworCisgIC8qIEVuc3VyZSB0aGVzZSBmdW5jdGlvbnMg YXJlIGF2YWlsYWJsZS4gICovCisgIHByaW50ZiAoImtpY2tvZmYgJWRcbiIs IGxvYyk7CisgIGZwcmludGYgKHN0ZGVyciwgImFsc28gdG8gc3RkZXJyICVk XG4iLCBsb2MpOworCisgIGZvbyAobG9jKyspOworICBmb28gKGxvYysrKTsK KyAgZm9vIChsb2MrKyk7CisgIHJldHVybiBnOworfQorCisjaW5jbHVkZSA8 c3RkbGliLmg+CisvKiBNYWtlIHN1cmUgZnVuY3Rpb24gJ21hbGxvYycgaXMg bGlua2VkIGludG8gcHJvZ3JhbS4gIE9uIHNvbWUgYmFyZS1tZXRhbAorICAg cG9ydCwgaWYgd2UgZG9uJ3QgdXNlICdtYWxsb2MnLCBpdCB3aWxsIG5vdCBi ZSBsaW5rZWQgaW4gcHJvZ3JhbS4gICdtYWxsb2MnCisgICBpcyBuZWVkZWQs IG90aGVyd2lzZSB3ZSdsbCBzZWUgc3VjaCBlcnJvciBtZXNzYWdlCisKKyAg IGV2YWx1YXRpb24gb2YgdGhpcyBleHByZXNzaW9uIHJlcXVpcmVzIHRoZSBw cm9ncmFtIHRvIGhhdmUgYSBmdW5jdGlvbgorICAgIm1hbGxvYyIuICAqLwor dm9pZAorYmFyICh2b2lkKQoreworICB2b2lkICpwID0gbWFsbG9jICgxNik7 CisKKyAgZnJlZSAocCk7Cit9Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHN1 aXRlL2dkYi5taS9taS1kcHJpbnRmLmV4cApAQCAtMCwwICsxLDEyMyBAQAor IyAgIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworbG9hZF9saWIgbWktc3Vw cG9ydC5leHAKK3NldCBNSUZMQUdTICItaT1taSIKKworZ2RiX2V4aXQKK2lm IFttaV9nZGJfc3RhcnRdIHsKKyAgICBjb250aW51ZQorfQorCitzdGFuZGFy ZF90ZXN0ZmlsZSAuYworCitpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFi bGUge2RlYnVnfV0gIT0gIiIgfSB7CisgICAgIHVudGVzdGVkIG1pLWRwcmlu dGYuZXhwCisgICAgIHJldHVybiAtMQorfQorCittaV9kZWxldGVfYnJlYWtw b2ludHMKKworc2V0IGJwX2xvY2F0aW9uMSBbZ2RiX2dldF9saW5lX251bWJl ciAic2V0IGJyZWFrcG9pbnQgMSBoZXJlIl0KK3NldCBkcF9sb2NhdGlvbjEg W2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBkcHJpbnRmIDEgaGVyZSJdCisK K21pX3J1bl90b19tYWluCisKK21pX2dkYl90ZXN0ICIxLWJyZWFrLWluc2Vy dCAtcyIgXAorICAgICIxXFxeZXJyb3IsbXNnPVwiLWJyZWFrLWluc2VydDog T3B0aW9uIC1zIHJlcXVpcmVzIGFuIGFyZ3VtZW50XCIiICJtaSBpbnNlcnQg d2l0aG91dCBsb2NhdGlvbiIKKworbWlfZ2RiX3Rlc3QgIjItYnJlYWstaW5z ZXJ0IC1zIGZvbyIgXAorICAgICIyXFxeZXJyb3IsbXNnPVwiLWJyZWFrLWlu c2VydDogTWlzc2luZyA8bG9jYXRpb24+XCIiICJtaSBpbnNlcnQgYnJlYWtw b2ludCB3aXRob3V0IGZvcm1hdCBzdHJpbmciCisKK21pX2dkYl90ZXN0ICIz LWJyZWFrLWluc2VydCAtcyAyOSIgXAorICAgICIzXFxeZXJyb3IsbXNnPVwi LWJyZWFrLWluc2VydDogTWlzc2luZyA8bG9jYXRpb24+XCIiICJtaSBpbnNl cnQgc2Vjb25kIGJyZWFrcG9pbnQgd2l0aG91dCBmb3JtYXQgc3RyaW5nIgor CittaV9nZGJfdGVzdCAiLWJyZWFrLWluc2VydCBtYWluIiAiLioiICJtaSBp bnNlcnQgYnJlYWtwb2ludCBtYWluIgorbWlfZGVsZXRlX2JyZWFrcG9pbnRz CisKK21pX2dkYl90ZXN0ICI0LWJyZWFrLWluc2VydCAtcyBcIlxcXCJBdCBm b28gZW50cnlcXFxcblxcXCJcIiBmb28iIFwKKyAgICAiNFxcXmRvbmUsYmtw dD1ce251bWJlcj1cIi4qXCIsdHlwZT1cImRwcmludGZcIi4qZnVuYz1cImZv b1wiLGZpbGU9XCIuKm1pLWRwcmludGYuY1wiLGZ1bGxuYW1lPVwiLiptaS1k cHJpbnRmLmNcIixsaW5lPVwiMjVcIi4qIiAibWkgaW5zZXJ0IGRwcmludGYg Zm9vIgorCittaV9nZGJfdGVzdCAiNS1icmVhay1pbnNlcnQgLXMgXCJcXFwi YXJnPSVkLCBnPSVkXFxcXG5cXFwiLCBhcmcsIGdcIiAkZHBfbG9jYXRpb24x IiBcCisgICAgIjVcXF5kb25lLGJrcHQ9XHtudW1iZXI9XCIuKlwiLHR5cGU9 XCJkcHJpbnRmXCIuKmZ1bmM9XCJmb29cIixmaWxlPVwiLiptaS1kcHJpbnRm LmNcIixmdWxsbmFtZT1cIi4qbWktZHByaW50Zi5jXCIsbGluZT1cIiRkcF9s b2NhdGlvbjFcIi4qIiBcCisgICAgIm1pIGluc2VydCBkcHJpbnRmIGRwX2xv Y2F0aW9uMSIKKworbWlfZ2RiX3Rlc3QgIjYtYnJlYWstaW5mbyIgXAorICAg ICI2XFxeZG9uZSxCcmVha3BvaW50VGFibGU9XHtucl9yb3dzPVwiLlwiLG5y X2NvbHM9XCIuXCIsaGRyPVxcXFtce3dpZHRoPVwiLipcIixhbGlnbm1lbnQ9 XCIuKlwiLGNvbF9uYW1lPVwibnVtYmVyXCIsY29saGRyPVwiTnVtXCJcfSxc e3dpZHRoPVwiLipcIixhbGlnbm1lbnQ9XCIuKlwiLGNvbF9uYW1lPVwidHlw ZVwiLGNvbGhkcj1cIlR5cGVcIlx9LFx7d2lkdGg9XCIuKlwiLGFsaWdubWVu dD1cIi4qXCIsY29sX25hbWU9XCJkaXNwXCIsY29saGRyPVwiRGlzcFwiXH0s XHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50PVwiLipcIixjb2xfbmFtZT1cImVu YWJsZWRcIixjb2xoZHI9XCJFbmJcIlx9LFx7d2lkdGg9XCIuKlwiLGFsaWdu bWVudD1cIi4qXCIsY29sX25hbWU9XCJhZGRyXCIsY29saGRyPVwiQWRkcmVz c1wiXH0sXHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50PVwiLipcIixjb2xfbmFt ZT1cIndoYXRcIixjb2xoZHI9XCJXaGF0XCJcfVxcXF0sYm9keT1cXFxbYmtw dD1ce251bWJlcj1cIjNcIix0eXBlPVwiZHByaW50ZlwiLipmdW5jPVwiZm9v XCIsZmlsZT1cIi4qbWktZHByaW50Zi5jXCIsZnVsbG5hbWU9XCIuKm1pLWRw cmludGYuY1wiLGxpbmU9XCIyNVwiLiosYmtwdD1ce251bWJlcj1cIi4qXCIs dHlwZT1cImRwcmludGZcIi4qZnVuYz1cImZvb1wiLGZpbGU9XCIuKm1pLWRw cmludGYuY1wiLGZ1bGxuYW1lPVwiLiptaS1kcHJpbnRmLmNcIixsaW5lPVwi JGRwX2xvY2F0aW9uMVwiLioiIFwKKyAgICAibWkgaW5mbyBkcHJpbnRmIgor CittaV9nZGJfdGVzdCAiLWJyZWFrLWluc2VydCAkYnBfbG9jYXRpb24xIiAi LioiICJtaSBpbnNlcnQgYnJlYWtwb2ludCBicF9sb2NhdGlvbjEiCisKK21p X3J1bl9jbWQKKworbWlfZ2RiX3Rlc3QgImNvbnRpbnVlIiAiLipBdCBmb28g ZW50cnkuKmFyZz0xMjM0LCBnPTEyMzQuKiIgIm1pIDFzdCBkcHJpbnRmLCBn ZGIiCisKK21pX2dkYl90ZXN0ICJjb250aW51ZSIgIi4qQXQgZm9vIGVudHJ5 Liphcmc9MTIzNSwgZz0yMjIyLioiICJtaSAybmQgZHByaW50ZiwgZ2RiIgor CisjIFRoZSAiY2FsbCIgc3R5bGUgZGVwZW5kcyBvbiBoYXZpbmcgSS9PIGZ1 bmN0aW9ucyBhdmFpbGFibGUsIHNvIHRlc3QuCisKK2lmICFbdGFyZ2V0X2lu Zm8gZXhpc3RzIGdkYixub2luZmVyaW9yaW9dIHsKKworICAgICMgTm93IHN3 aXRjaCBzdHlsZXMgYW5kIHJlcnVuOyBpbiB0aGUgYWJzZW5jZSBvZiByZWRp cmVjdGlvbiB0aGUKKyAgICAjIG91dHB1dCBzaG91bGQgYmUgdGhlIHNhbWUu CisKKyAgICBtaV9nZGJfdGVzdCAic2V0IGRwcmludGYtc3R5bGUgY2FsbCIg Ii4qIiAibWkgc2V0IGRwcmludGYgc3R5bGUgdG8gY2FsbCIKKworICAgIG1p X3J1bl9jbWQKKworICAgIG1pX2dkYl90ZXN0ICJjb250aW51ZSIgIi4qQXQg Zm9vIGVudHJ5Liphcmc9MTIzNCwgZz0xMjM0LioiICJtaSAxc3QgZHByaW50 ZiwgY2FsbCIKKworICAgIG1pX2dkYl90ZXN0ICJjb250aW51ZSIgIi4qQXQg Zm9vIGVudHJ5Liphcmc9MTIzNSwgZz0yMjIyLioiICJtaSAybmQgZHByaW50 ZiwgY2FsbCIKKworICAgIG1pX2dkYl90ZXN0ICJzZXQgZHByaW50Zi1mdW5j dGlvbiBmcHJpbnRmIiAiLioiICJtaSBzZXQgZHByaW50Zi1jaGFubmVsIHN0 ZGVyciIKKyAgICBtaV9nZGJfdGVzdCAic2V0IGRwcmludGYtY2hhbm5lbCBz dGRlcnIiICIuKiIgIm1pIHNldCBkcHJpbnRmIGNoYW5uZWwiCisKKyAgICBt aV9ydW5fY21kCisKKyAgICBtaV9nZGJfdGVzdCAiY29udGludWUiICIuKkF0 IGZvbyBlbnRyeS4qYXJnPTEyMzQsIGc9MTIzNC4qIiAibWkgMXN0IGRwcmlu dGYsIGZwcmludGYiCisKKyAgICBtaV9nZGJfdGVzdCAiY29udGludWUiICIu KkF0IGZvbyBlbnRyeS4qYXJnPTEyMzUsIGc9MjIyMi4qIiAibWkgMm5kIGRw cmludGYsIGZwcmludGYiCit9CisKK3NldCB0YXJnZXRfY2FuX2RwcmludGYg MQorc2V0IG1zZyAiU2V0IGRwcmludGYgc3R5bGUgdG8gYWdlbnQiCittaV9n ZGJfdGVzdCAiMXNldCBkcHJpbnRmLXN0eWxlIGFnZW50IiAiXFteXG5cXSpc clxuZG9uZSIKK2dkYl9leHBlY3QgeworICAgIC1yZSAiXFxeZG9uZSIgewor CXBhc3MgIiRtc2cgLSBjYW4gZG8iCisgICAgfQorICAgIC1yZSAiLioiIHsK KwlzZXQgdGFyZ2V0X2Nhbl9kcHJpbnRmIDAKKwlwYXNzICIkbXNnIC0gY2Fu bm90IGRvIgorICAgIH0KKyAgICB0aW1lb3V0IHsKKyAgICAgICBmYWlsICJy ZXN1bWUgYWxsLCB3YWl0aW5nIGZvciBwcm9ncmFtIGV4aXQgKHRpbWVvdXQp IgorICAgIH0KK30KKworaWYgJHRhcmdldF9jYW5fZHByaW50ZiB7CisKKyAg ICBtaV9ydW5fY21kCisKKyAgICBtaV9nZGJfdGVzdCAiY29udGludWUiICJC cmVha3BvaW50IFxbMC05XF0rLCBmb28gLioiICJtaSAxc3QgZHByaW50Ziwg YWdlbnQiCisKKyAgICBtaV9nZGJfdGVzdCAiY29udGludWUiICJCcmVha3Bv aW50IFxbMC05XF0rLCBmb28gLioiICJtaSAybmQgZHByaW50ZiwgYWdlbnQi CisKKyAgICBtaV9nZGJfdGVzdCAiNi1icmVhay1pbmZvIiBcCisJIjZcXF5k b25lLEJyZWFrcG9pbnRUYWJsZT1ce25yX3Jvd3M9XCIuXCIsbnJfY29scz1c Ii5cIixoZHI9XFxcW1x7d2lkdGg9XCIuKlwiLGFsaWdubWVudD1cIi4qXCIs Y29sX25hbWU9XCJudW1iZXJcIixjb2xoZHI9XCJOdW1cIlx9LFx7d2lkdGg9 XCIuKlwiLGFsaWdubWVudD1cIi4qXCIsY29sX25hbWU9XCJ0eXBlXCIsY29s aGRyPVwiVHlwZVwiXH0sXHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50PVwiLipc Iixjb2xfbmFtZT1cImRpc3BcIixjb2xoZHI9XCJEaXNwXCJcfSxce3dpZHRo PVwiLipcIixhbGlnbm1lbnQ9XCIuKlwiLGNvbF9uYW1lPVwiZW5hYmxlZFwi LGNvbGhkcj1cIkVuYlwiXH0sXHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50PVwi LipcIixjb2xfbmFtZT1cImFkZHJcIixjb2xoZHI9XCJBZGRyZXNzXCJcfSxc e3dpZHRoPVwiLipcIixhbGlnbm1lbnQ9XCIuKlwiLGNvbF9uYW1lPVwid2hh dFwiLGNvbGhkcj1cIldoYXRcIlx9XFxcXSxib2R5PVxcXFtia3B0PVx7bnVt YmVyPVwiM1wiLHR5cGU9XCJkcHJpbnRmXCIuKmZ1bmM9XCJmb29cIixmaWxl PVwiLiptaS1kcHJpbnRmLmNcIixmdWxsbmFtZT1cIi4qbWktZHByaW50Zi5j XCIsbGluZT1cIjI1XCIuKixia3B0PVx7bnVtYmVyPVwiLipcIix0eXBlPVwi ZHByaW50ZlwiLipmdW5jPVwiZm9vXCIsZmlsZT1cIi4qbWktZHByaW50Zi5j XCIsZnVsbG5hbWU9XCIuKm1pLWRwcmludGYuY1wiLGxpbmU9XCIkZHBfbG9j YXRpb24xXCIuKiIgXAorCSJtaSBpbmZvIGRwcmludGYgc2Vjb25kIHRpbWUi Cit9CisKK21pX2dkYl90ZXN0ICJzZXQgZHByaW50Zi1zdHlsZSBmb29iYXIi ICIuKmVycm9yLioiICJtaSBzZXQgZHByaW50ZiBzdHlsZSB0byBhbiB1bnJl Y29nbml6ZWQgdHlwZSIK --e89a8fb1fa10738b4a04d90bafd3--