From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15660 invoked by alias); 22 Oct 2007 21:23:00 -0000 Received: (qmail 15649 invoked by uid 22791); 22 Oct 2007 21:22:59 -0000 X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.33.17) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 22 Oct 2007 21:22:54 +0000 Received: from zps36.corp.google.com (zps36.corp.google.com [172.25.146.36]) by smtp-out.google.com with ESMTP id l9MLMaxt010924 for ; Mon, 22 Oct 2007 22:22:36 +0100 Received: from ug-out-1314.google.com (ugfh2.prod.google.com [10.66.184.2]) by zps36.corp.google.com with ESMTP id l9MLLwIH015965 for ; Mon, 22 Oct 2007 14:22:35 -0700 Received: by ug-out-1314.google.com with SMTP id h2so24132ugf for ; Mon, 22 Oct 2007 14:22:34 -0700 (PDT) Received: by 10.66.219.11 with SMTP id r11mr25518ugg.1193088152055; Mon, 22 Oct 2007 14:22:32 -0700 (PDT) Received: by 10.66.242.13 with HTTP; Mon, 22 Oct 2007 14:22:31 -0700 (PDT) Message-ID: Date: Mon, 22 Oct 2007 21:25:00 -0000 From: "Douglas Evans" To: gdb-patches@sourceware.org Subject: Re: RFA: patch to fix multi-breakpoint enable/disable handling of inline functions In-Reply-To: <20071016001816.F059B1C7E69@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_6543_27092445.1193088152036" References: <20071016001816.F059B1C7E69@localhost> 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: 2007-10/txt/msg00526.txt.bz2 ------=_Part_6543_27092445.1193088152036 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 2657 Ping. I've split the patch into two parts, separating out the tweaks to mb-templates.exp,mb-ctor.exp (I'll send this in a separate message). I also fixed a few typos. The revised patch is attached. Ok to check in? On 10/15/07, Doug Evans wrote: > Consider: > > dje@ruffy:~/gnu/sourceware/head/obj/gdb/testsuite/gdb.cp$ ~/gnu/sourceware/head/rel/bin/gdb mb-inline > GNU gdb 6.7.50-20071009-cvs > Copyright (C) 2007 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "i386-linux"... > Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". > (gdb) b mb-inline.h:6 > Breakpoint 1 at 0x80483e9: file ../../../src/gdb/testsuite/gdb.cp/mb-inline.h, line 6. (2 locations) > (gdb) i b > Num Type Disp Enb Address What > 1 breakpoint keep y > 1.1 y 0x080483e9 in foo > at ../../../src/gdb/testsuite/gdb.cp/mb-inline.h:6 > 1.2 y 0x0804843d in foo > at ../../../src/gdb/testsuite/gdb.cp/mb-inline.h:6 > (gdb) dis 1.2 > (gdb) i b > Num Type Disp Enb Address What > 1 breakpoint keep y > 1.1 y 0x080483e9 in foo > at ../../../src/gdb/testsuite/gdb.cp/mb-inline.h:6 > 1.2 n 0x0804843d in foo > at ../../../src/gdb/testsuite/gdb.cp/mb-inline.h:6 > (gdb) r > Starting program: /home/dje/gnu/sourceware/head/obj/gdb/testsuite/gdb.cp/mb-inline > > Breakpoint 1, foo (i=1) at ../../../src/gdb/testsuite/gdb.cp/mb-inline.h:6 > 6 return i; // set breakpoint here > (gdb) i b > Num Type Disp Enb Address What > 1 breakpoint keep y > breakpoint already hit 1 time > 1.1 n 0x080483e9 in foo > at ../../../src/gdb/testsuite/gdb.cp/mb-inline.h:6 > 1.2 y 0x0804843d in foo > at ../../../src/gdb/testsuite/gdb.cp/mb-inline.h:6 > (gdb) > > Note that 1.1 is now disabled and 1.2 is enabled. > > Here's a patch. > There is a heuristic involved in knowing when to not compare function names. > I've tried to come up with something reasonable. ------=_Part_6543_27092445.1193088152036 Content-Type: text/x-patch; name=gdb-071022-mb-inline-2a.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_f83hujns Content-Disposition: attachment; filename=gdb-071022-mb-inline-2a.patch Content-length: 13770 Q29uc2lkZXI6CgpkamVAcnVmZnk6fi9nbnUvc291cmNld2FyZS9oZWFkL29i ai9nZGIvdGVzdHN1aXRlL2dkYi5jcCQgfi9nbnUvc291cmNld2FyZS9oZWFk L3JlbC9iaW4vZ2RiIG1iLWlubGluZQpHTlUgZ2RiIDYuNy41MC0yMDA3MTAw OS1jdnMKQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgpMaWNlbnNlIEdQTHYzKzogR05VIEdQTCB2ZXJzaW9uIDMg b3IgbGF0ZXIgPGh0dHA6Ly9nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sPgpU aGlzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBhcmUgZnJlZSB0byBjaGFuZ2Ug YW5kIHJlZGlzdHJpYnV0ZSBpdC4KVGhlcmUgaXMgTk8gV0FSUkFOVFksIHRv IHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdy4gIFR5cGUgInNob3cgY29w eWluZyIKYW5kICJzaG93IHdhcnJhbnR5IiBmb3IgZGV0YWlscy4KVGhpcyBH REIgd2FzIGNvbmZpZ3VyZWQgYXMgImkzODYtbGludXgiLi4uClVzaW5nIGhv c3QgbGlidGhyZWFkX2RiIGxpYnJhcnkgIi9saWIvdGxzL2k2ODYvY21vdi9s aWJ0aHJlYWRfZGIuc28uMSIuCihnZGIpIGIgbWItaW5saW5lLmg6NgpCcmVh a3BvaW50IDEgYXQgMHg4MDQ4M2U5OiBmaWxlIC4uLy4uLy4uL3NyYy9nZGIv dGVzdHN1aXRlL2dkYi5jcC9tYi1pbmxpbmUuaCwgbGluZSA2LiAoMiBsb2Nh dGlvbnMpCihnZGIpIGkgYgpOdW0gICAgIFR5cGUgICAgICAgICAgIERpc3Ag RW5iICBBZGRyZXNzICAgIFdoYXQKMSAgICAgICBicmVha3BvaW50ICAgICBr ZWVwIHkgICAgPE1VTFRJUExFPgoxLjEgICAgICAgICAgICAgICAgICAgICAg ICAgeSAgICAweDA4MDQ4M2U5IGluIGZvbwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF0IC4uLy4uLy4uL3NyYy9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9tYi1pbmxpbmUuaDo2CjEuMiAgICAgICAgICAgICAgICAg ICAgICAgICB5ICAgIDB4MDgwNDg0M2QgaW4gZm9vCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXQgLi4vLi4vLi4vc3JjL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL21iLWlubGluZS5oOjYKKGdkYikgZGlzIDEuMgoo Z2RiKSBpIGIKTnVtICAgICBUeXBlICAgICAgICAgICBEaXNwIEVuYiAgQWRk cmVzcyAgICBXaGF0CjEgICAgICAgYnJlYWtwb2ludCAgICAga2VlcCB5ICAg IDxNVUxUSVBMRT4KMS4xICAgICAgICAgICAgICAgICAgICAgICAgIHkgICAg MHgwODA0ODNlOSBpbiBmb28KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdCAuLi8uLi8uLi9zcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbWItaW5saW5lLmg6NgoxLjIgICAgICAgICAgICAgICAgICAgICAgICAg biAgICAweDA4MDQ4NDNkIGluIGZvbwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGF0IC4uLy4uLy4uL3NyYy9nZGIvdGVzdHN1aXRl L2dkYi5jcC9tYi1pbmxpbmUuaDo2CihnZGIpIHIKU3RhcnRpbmcgcHJvZ3Jh bTogL2hvbWUvZGplL2dudS9zb3VyY2V3YXJlL2hlYWQvb2JqL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL21iLWlubGluZQoKQnJlYWtwb2ludCAxLCBmb28gKGk9 MSkgYXQgLi4vLi4vLi4vc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21iLWlu bGluZS5oOjYKNiAgICAgICAgIHJldHVybiBpOyAvLyBzZXQgYnJlYWtwb2lu dCBoZXJlCihnZGIpIGkgYgpOdW0gICAgIFR5cGUgICAgICAgICAgIERpc3Ag RW5iICBBZGRyZXNzICAgIFdoYXQKMSAgICAgICBicmVha3BvaW50ICAgICBr ZWVwIHkgICAgPE1VTFRJUExFPgogICAgICAgYnJlYWtwb2ludCBhbHJlYWR5 IGhpdCAxIHRpbWUKMS4xICAgICAgICAgICAgICAgICAgICAgICAgIG4gICAg MHgwODA0ODNlOSBpbiBmb28KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdCAuLi8uLi8uLi9zcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbWItaW5saW5lLmg6NgoxLjIgICAgICAgICAgICAgICAgICAgICAgICAg eSAgICAweDA4MDQ4NDNkIGluIGZvbwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGF0IC4uLy4uLy4uL3NyYy9nZGIvdGVzdHN1aXRl L2dkYi5jcC9tYi1pbmxpbmUuaDo2CihnZGIpCgpOb3RlIHRoYXQgMS4xIGlz IG5vdyBkaXNhYmxlZCBhbmQgMS4yIGlzIGVuYWJsZWQuCgpIZXJlJ3MgYSBw YXRjaC4KVGhlcmUgaXMgYSBoZXVyaXN0aWMgaW52b2x2ZWQgaW4ga25vd2lu ZyB3aGVuIHRvIG5vdCBjb21wYXJlIGZ1bmN0aW9uIG5hbWVzLgpJJ3ZlIHRy aWVkIHRvIGNvbWUgdXAgd2l0aCBzb21ldGhpbmcgcmVhc29uYWJsZS4KCjIw MDctMTAtMTUgIERvdWcgRXZhbnMgIDxkamVAZ29vZ2xlLmNvbT4KCgkqIGJy ZWFrcG9pbnQuYyAoYW1iaWd1b3VzX25hbWVzX3ApOiBOZXcgZm4uCgkodXBk YXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zKTogV2hlbiByZXN0b3JpbmcgYnAg ZW5hYmxlIHN0YXR1cywgZG9uJ3QKCWNvbXBhcmUgZnVuY3Rpb24gbmFtZXMg aWYgYWxsIGZ1bmN0aW9ucyBoYXZlIHNhbWUgbmFtZS4KCgkqIGdkYi5jcC9t Yi1pbmxpbmUuZXhwOiBOZXcuCgkqIGdkYi5jcC9tYi1pbmxpbmUuaDogTmV3 LgoJKiBnZGIuY3AvbWItaW5saW5lMS5jYzogTmV3LgoJKiBnZGIuY3AvbWIt aW5saW5lMi5jYzogTmV3LgoKSW5kZXg6IGJyZWFrcG9pbnQuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2Jy ZWFrcG9pbnQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNzQKZGlmZiAt dSAtdSAtcCAtcjEuMjc0IGJyZWFrcG9pbnQuYwotLS0gLi9icmVha3BvaW50 LmMJMTIgT2N0IDIwMDcgMTY6MTE6MTEgLTAwMDAJMS4yNzQKKysrIC4vYnJl YWtwb2ludC5jCTE1IE9jdCAyMDA3IDIzOjQ3OjU0IC0wMDAwCkBAIC03NDk2 LDYgKzc0OTYsMzcgQEAgYWxsX2xvY2F0aW9uc19hcmVfcGVuZGluZyAoc3Ry dWN0IGJwX2xvYwogICByZXR1cm4gMTsKIH0KIAorLyogUmV0dXJuIG5vbi16 ZXJvIGlmIG11bHRpcGxlIGZucyBpbiBsaXN0IExPQyBoYXZlIHRoZSBzYW1l IG5hbWUuCisgICBOdWxsIG5hbWVzIGFyZSBpZ25vcmVkLgorICAgVGhpcyBy ZXR1cm5zIHplcm8gaWYgdGhlcmUncyA8PSBvbmUgbmFtZWQgZnVuY3Rpb24s IHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LgorICAgPz8/IFRoaXMgdGVzdHMgZm9y IGFtYmlndWl0eSB3aXRoIHRoZSBmaXJzdCBuYW1lZCBmdW5jdGlvbiwgaXQg ZG9lc24ndAorICAgaGFuZGxlIHRoZSBjYXNlIG9mIG11bHRpcGxlIGFtYmln dWl0aWVzLiAgVGhpcyBjYW4gYmUgZml4ZWQgYXQgdGhlIGNvc3Qgb2YKKyAg IHNvbWUgY29tcGxleGl0eSBpbiB0aGUgY2FsbGVyLCBidXQgaXQncyB1bmtu b3duIGlmIHRoaXMgaXMgYSBwcmFjdGljYWwKKyAgIGlzc3VlLiAgKi8KKwor c3RhdGljIGludAorYW1iaWd1b3VzX25hbWVzX3AgKHN0cnVjdCBicF9sb2Nh dGlvbiAqbG9jKQoreworICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmw7CisgIGNv bnN0IGNoYXIgKm5hbWUgPSBOVUxMOworCisgIGZvciAobCA9IGxvYzsgbCAh PSBOVUxMOyBsID0gbC0+bmV4dCkKKyAgICB7CisgICAgICAvKiBBbGxvdyBm b3Igc29tZSBuYW1lcyB0byBiZSBOVUxMLCBpZ25vcmUgdGhlbS4gICovCisg ICAgICBpZiAobC0+ZnVuY3Rpb25fbmFtZSA9PSBOVUxMKQorCWNvbnRpbnVl OworICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKKwl7CisJICBuYW1lID0gbC0+ ZnVuY3Rpb25fbmFtZTsKKwkgIGNvbnRpbnVlOworCX0KKyAgICAgIGlmIChz dHJjbXAgKG5hbWUsIGwtPmZ1bmN0aW9uX25hbWUpID09IDApCisJcmV0dXJu IDE7CisgICAgfQorCisgIHJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZAog dXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2lu dCAqYiwKIAkJCSAgICAgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHMp CkBAIC03NTU4LDE4ICs3NTg5LDM3IEBAIHVwZGF0ZV9icmVha3BvaW50X2xv Y2F0aW9ucyAoc3RydWN0IGJyZWEKICAgLyogSWYgcG9zc2libGUsIGNhcnJ5 IG92ZXIgJ2Rpc2FibGUnIHN0YXR1cyBmcm9tIGV4aXN0aW5nIGJyZWFrcG9p bnRzLiAgKi8KICAgewogICAgIHN0cnVjdCBicF9sb2NhdGlvbiAqZSA9IGV4 aXN0aW5nX2xvY2F0aW9uczsKKyAgICAvKiBJZiB0aGVyZSBhcmUgbXVsdGlw bGUgYnJlYWtwb2ludHMgd2l0aCB0aGUgc2FtZSBmdW5jdGlvbiBuYW1lLAor ICAgICAgIGUuZy4gZm9yIGlubGluZSBmdW5jdGlvbnMsIGNvbXBhcmluZyBm dW5jdGlvbiBuYW1lcyB3b24ndCB3b3JrLgorICAgICAgIEluc3RlYWQgY29t cGFyZSBwYyBhZGRyZXNzZXM7IHRoaXMgaXMganVzdCBhIGhldXJpc3RpYyBh cyB0aGluZ3MKKyAgICAgICBtYXkgaGF2ZSBtb3ZlZCwgYnV0IGluIHByYWN0 aWNlIGl0IGdpdmVzIHRoZSBjb3JyZWN0IGFuc3dlcgorICAgICAgIG9mdGVu IGVub3VnaCB1bnRpbCBhIGJldHRlciBzb2x1dGlvbiBpcyBmb3VuZC4gICov CisgICAgaW50IGhhdmVfYW1iaWd1b3VzX25hbWVzID0gYW1iaWd1b3VzX25h bWVzX3AgKGItPmxvYyk7CisKICAgICBmb3IgKDsgZTsgZSA9IGUtPm5leHQp CiAgICAgICB7CiAJaWYgKCFlLT5lbmFibGVkICYmIGUtPmZ1bmN0aW9uX25h bWUpCiAJICB7CiAJICAgIHN0cnVjdCBicF9sb2NhdGlvbiAqbCA9IGItPmxv YzsKLQkgICAgZm9yICg7IGw7IGwgPSBsLT5uZXh0KQotCSAgICAgIGlmIChs LT5mdW5jdGlvbl9uYW1lIAotCQkgICYmIHN0cmNtcCAoZS0+ZnVuY3Rpb25f bmFtZSwgbC0+ZnVuY3Rpb25fbmFtZSkgPT0gMCkKLQkJewotCQkgIGwtPmVu YWJsZWQgPSAwOwotCQkgIGJyZWFrOwotCQl9CisJICAgIGlmIChoYXZlX2Ft YmlndW91c19uYW1lcykKKwkgICAgICB7CisJCWZvciAoOyBsOyBsID0gbC0+ bmV4dCkKKwkJICBpZiAoZS0+YWRkcmVzcyA9PSBsLT5hZGRyZXNzKQorCQkg ICAgeworCQkgICAgICBsLT5lbmFibGVkID0gMDsKKwkJICAgICAgYnJlYWs7 CisJCSAgICB9CisJICAgICAgfQorCSAgICBlbHNlCisJICAgICAgeworCQlm b3IgKDsgbDsgbCA9IGwtPm5leHQpCisJCSAgaWYgKGwtPmZ1bmN0aW9uX25h bWUKKwkJICAgICAgJiYgc3RyY21wIChlLT5mdW5jdGlvbl9uYW1lLCBsLT5m dW5jdGlvbl9uYW1lKSA9PSAwKQorCQkgICAgeworCQkgICAgICBsLT5lbmFi bGVkID0gMDsKKwkJICAgICAgYnJlYWs7CisJCSAgICB9CisJICAgICAgfQog CSAgfQogICAgICAgfQogICB9CkluZGV4OiB0ZXN0c3VpdGUvZ2RiLmNwL21i LWlubGluZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21iLWlubGluZS5l eHAsdgpkaWZmIC11IC1wIC1OIG1iLWlubGluZS5leHAKLS0tIC4vL2Rldi9u dWxsCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyAu L3Rlc3RzdWl0ZS9nZGIuY3AvbWItaW5saW5lLmV4cAkyMDA3LTEwLTE1IDE2 OjQ0OjM2Ljg1ODc2NjAwMCAtMDcwMApAQCAtMCwwICsxLDEwOCBAQAorIyBD b3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgZ2RiIHRlc3RzdWl0ZS4KKworIyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhh dCBzZXR0aW5nIGJyZWFrcG9pbnQgb24gbGluZSBpbiBpbmxpbmUKKyMgZnVu Y3Rpb24gd2lsbCBmaXJlIGluIGFsbCBpbnN0YW50aWF0aW9ucyBvZiB0aGF0 IGZ1bmN0aW9uLgorCitpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKyAgICBzdHJh Y2UgJHRyYWNlbGV2ZWwKK30KKworaWYgeyBbc2tpcF9jcGx1c190ZXN0c10g fSB7IGNvbnRpbnVlIH0KKworc2V0IHBybXNfaWQgMAorc2V0IGJ1Z19pZCAw CisKK3NldCB0ZXN0ZmlsZSAibWItaW5saW5lIgorc2V0IGhkcmZpbGUgIiR7 dGVzdGZpbGV9LmgiCitzZXQgc3JjZmlsZTEgIiR7dGVzdGZpbGV9MS5jYyIK K3NldCBvYmpmaWxlMSAiJHt0ZXN0ZmlsZX0xLm8iCitzZXQgc3JjZmlsZTIg IiR7dGVzdGZpbGV9Mi5jYyIKK3NldCBvYmpmaWxlMiAiJHt0ZXN0ZmlsZX0y Lm8iCitzZXQgYmluZmlsZSAgIiR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0iCisKK2lmICB7IFtnZGJfY29tcGlsZSAiJHNyY2Rpci8kc3ViZGly LyRzcmNmaWxlMSIgIiRvYmpkaXIvJHN1YmRpci8kb2JqZmlsZTEiIG9iamVj dCB7ZGVidWcgYysrfV0gIT0gIiIgfSB7CisgICAgIHVudGVzdGVkIHJ0dGku ZXhwCisgICAgIHJldHVybiAtMQorfQorCitpZiAgeyBbZ2RiX2NvbXBpbGUg IiRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZTIiICIkb2JqZGlyLyRzdWJkaXIv JG9iamZpbGUyIiBvYmplY3Qge2RlYnVnIGMrK31dICE9ICIiIH0geworICAg ICB1bnRlc3RlZCBydHRpLmV4cAorICAgICByZXR1cm4gLTEKK30KKworaWYg IHsgW2dkYl9jb21waWxlICIkb2JqZGlyLyRzdWJkaXIvJG9iamZpbGUxICRv YmpkaXIvJHN1YmRpci8kb2JqZmlsZTIiICIke2JpbmZpbGV9IiBleGVjdXRh YmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKKyAgICAgdW50ZXN0ZWQgcnR0 aS5leHAKKyAgICAgcmV0dXJuIC0xCit9CisKK2lmIFtnZXRfY29tcGlsZXJf aW5mbyAke2JpbmZpbGV9ICJjKysiXSB7CisgICAgcmV0dXJuIC0xCit9CisK K2dkYl9leGl0CitnZGJfc3RhcnQKK2dkYl9yZWluaXRpYWxpemVfZGlyICRz cmNkaXIvJHN1YmRpcgorZ2RiX2xvYWQgJHtiaW5maWxlfQorCitzZXQgYnBf bG9jYXRpb24gW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50 IGhlcmUiICRoZHJmaWxlXQorCisjIFNldCBhIGJyZWFrcG9pbnQgd2l0aCBt dWx0aXBsZSBsb2NhdGlvbnMuCisKK2dkYl90ZXN0ICJicmVhayAkaGRyZmls ZTokYnBfbG9jYXRpb24iIFwKKyAgICAiQnJlYWtwb2ludC4qYXQuKiBmaWxl IC4qJGhkcmZpbGUsIGxpbmUuKlxcKDIgbG9jYXRpb25zXFwpLioiIFwKKyAg ICAic2V0IGJyZWFrcG9pbnQiCisKK2dkYl9ydW5fY21kCitnZGJfZXhwZWN0 IHsKKyAgICAtcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssLipmb28gXFwoaT0w XFwpLiokZ2RiX3Byb21wdCAkIiB7CisJcGFzcyAicnVuIHRvIGJyZWFrcG9p bnQiCisgICAgfQorICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIgeworCWZhaWwg InJ1biB0byBicmVha3BvaW50IgorICAgIH0KKyAgICB0aW1lb3V0IHsKKwlm YWlsICJydW4gdG8gYnJlYWtwb2ludCAodGltZW91dCkiCisgICAgfQorfQor CitnZGJfdGVzdCAiY29udGludWUiIFwKKyAgICAiLipCcmVha3BvaW50Lipm b28gXFwoaT0xXFwpLioiIFwKKyAgICAicnVuIHRvIGJyZWFrcG9pbnQgMiIK KworIyBUcnkgZGlzYWJsaW5nIGEgc2luZ2xlIGxvY2F0aW9uLiBXZSBhbHNv IHRlc3QKKyMgdGhhdCBhdCBsZWFzdCBpbiBzaW1wbGUgY2FzZXMsIHRoZSBl bmFibGUvZGlzYWJsZQorIyBzdGF0ZSBvZiBsb2NhdGlvbnMgc3Vydml2ZSAi cnVuIi4KKyMgRWFybHkgYnVnIHdvdWxkIGRpc2FibGUgMS4xIGFuZCBlbmFi bGUgMS4yIHdoZW4gcHJvZ3JhbSBpcyBydW4uCitnZGJfdGVzdCAiZGlzYWJs ZSAxLjIiICIiICJkaXNhYmxpbmcgbG9jYXRpb246IGRpc2FibGUiCisKK2dk Yl9ydW5fY21kCitnZGJfZXhwZWN0IHsKKyAgICAtcmUgIkJyZWFrcG9pbnQg XFswLTlcXSssLipmb28gXFwoaT0wXFwpLiokZ2RiX3Byb21wdCAkIiB7CisJ cGFzcyAiZGlzYWJsaW5nIGxvY2F0aW9uOiBydW4gdG8gYnJlYWtwb2ludCIK KyAgICB9CisgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7CisJZmFpbCAiZGlz YWJsaW5nIGxvY2F0aW9uOiBydW4gdG8gYnJlYWtwb2ludCIKKyAgICB9Cisg ICAgdGltZW91dCB7CisJZmFpbCAiZGlzYWJsaW5nIGxvY2F0aW9uOiBydW4g dG8gYnJlYWtwb2ludCAodGltZW91dCkiCisgICAgfQorfQorCitnZGJfdGVz dCAiY29udGludWUiIFwKKyAgICAiLipQcm9ncmFtIGV4aXRlZCBub3JtYWxs eS4qIiBcCisgICAgImNvbnRpbnVlIHdpdGggZGlzYWJsZWQgYnJlYWtwb2lu dCAxLjIiCkluZGV4OiB0ZXN0c3VpdGUvZ2RiLmNwL21iLWlubGluZS5oCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9tYi1pbmxpbmUuaCx2CmRpZmYgLXUgLXAg LU4gbWItaW5saW5lLmgKLS0tIC4vL2Rldi9udWxsCTE5NjktMTItMzEgMTY6 MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyAuL3Rlc3RzdWl0ZS9nZGIuY3Av bWItaW5saW5lLmgJMjAwNy0xMC0xNSAxNjo0MDo0Mi45MDgxMTQwMDAgLTA3 MDAKQEAgLTAsMCArMSwxMCBAQAorLy8gVGVzdCBnZGIgc3VwcG9ydCBmb3Ig c2V0dGluZyBmaWxlOmxpbmUgYnJlYWtwb2ludHMgb24gaW5saW5lIGZucy4K Kworc3RhdGljIGlubGluZSBpbnQKK2ZvbyAoaW50IGkpCit7CisgIHJldHVy biBpOyAvLyBzZXQgYnJlYWtwb2ludCBoZXJlCit9CisKK2V4dGVybiBpbnQg YWZuICgpOworZXh0ZXJuIGludCBiZm4gKCk7CkluZGV4OiB0ZXN0c3VpdGUv Z2RiLmNwL21iLWlubGluZTEuY2MKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21i LWlubGluZTEuY2MsdgpkaWZmIC11IC1wIC1OIG1iLWlubGluZTEuY2MKLS0t IC4vL2Rldi9udWxsCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0w ODAwCisrKyAuL3Rlc3RzdWl0ZS9nZGIuY3AvbWItaW5saW5lMS5jYwkyMDA3 LTEwLTE1IDE2OjQyOjAyLjY0NDAyNDAwMCAtMDcwMApAQCAtMCwwICsxLDE3 IEBACisvLyBUZXN0IGdkYiBzdXBwb3J0IGZvciBzZXR0aW5nIGZpbGU6bGlu ZSBicmVha3BvaW50cyBvbiBpbmxpbmUgZm5zLgorCisjaW5jbHVkZSAibWIt aW5saW5lLmgiCisKK2ludAorYWZuICgpCit7CisgIHJldHVybiBmb28gKDAp OworfQorCitpbnQKK21haW4gKCkKK3sKKyAgaW50IGEgPSBhZm4gKCk7Cisg IGludCBiID0gYmZuICgpOworICByZXR1cm4gYSAqIGI7Cit9CkluZGV4OiB0 ZXN0c3VpdGUvZ2RiLmNwL21iLWlubGluZTIuY2MKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL21iLWlubGluZTIuY2MsdgpkaWZmIC11IC1wIC1OIG1iLWlubGlu ZTIuY2MKLS0tIC4vL2Rldi9udWxsCTE5NjktMTItMzEgMTY6MDA6MDAuMDAw MDAwMDAwIC0wODAwCisrKyAuL3Rlc3RzdWl0ZS9nZGIuY3AvbWItaW5saW5l Mi5jYwkyMDA3LTEwLTE1IDE2OjQyOjA2LjMxNTYxNTAwMCAtMDcwMApAQCAt MCwwICsxLDcgQEAKKyNpbmNsdWRlICJtYi1pbmxpbmUuaCIKKworaW50Citi Zm4gKCkKK3sKKyAgcmV0dXJuIGZvbyAoMSk7Cit9Cg== ------=_Part_6543_27092445.1193088152036--