From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26367 invoked by alias); 24 Aug 2012 01:09:27 -0000 Received: (qmail 26351 invoked by uid 22791); 24 Aug 2012 01:09:26 -0000 X-SWARE-Spam-Status: No, hits=-5.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-iy0-f169.google.com (HELO mail-iy0-f169.google.com) (209.85.210.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 24 Aug 2012 01:09:13 +0000 Received: by iahk25 with SMTP id k25so2678797iah.0 for ; Thu, 23 Aug 2012 18:09:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=woqs4zJoSWsn4bGZiJemmaRGypHF6Xs5DfwHMTYzYnA=; b=MASzkAf30qRsJy5KxhZcjbPZir5tLMN6Lavuiqq4PIv/tpvOUutPS21IbeZ3L5ovFi THsjdCO+ZwKti4d7ZlP9+NdMG2XtEA+0oSVuDOV8Zv9M+LbNtrjaRbp+DnN5E0/8JqxJ BEd1DEY/Vg0u6+4s3BxnXkmDY1bEdG9eufvC77Mvo/SMEPYgkd3SMq0ngovzPfQOuuBy R2bsCrHYYs9Povw7lbhibw9L2iJYLZyJxth7CwlMfIKPAXlZb7AeHpouipklbEdQxE1R ts4SBnY7nvlUn7iSW3NfJBOxAGGTOiVYJralV8h89sS6EaMt/w0uF76EA8cvtPILoeQP 2/lQ== Received: by 10.50.157.194 with SMTP id wo2mr280251igb.72.1345770552523; Thu, 23 Aug 2012 18:09:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.50.157.194 with SMTP id wo2mr280243igb.72.1345770552370; Thu, 23 Aug 2012 18:09:12 -0700 (PDT) Received: by 10.50.104.233 with HTTP; Thu, 23 Aug 2012 18:09:12 -0700 (PDT) In-Reply-To: <87pq6hppiz.fsf@fleche.redhat.com> References: <87pq6isqt9.fsf@fleche.redhat.com> <87pq6hppiz.fsf@fleche.redhat.com> Date: Fri, 24 Aug 2012 01:09:00 -0000 Message-ID: Subject: Re: [patch] info threads sort by name and name regex matching From: Aaron Gamble To: Tom Tromey Cc: Sergio Durigan Junior , gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=e89a8f3b9e1fb927ff04c7f89f3c X-System-Of-Record: true X-Gm-Message-State: ALoCoQmY7bb56LLzkB/S/2M2WOKlVWOvw00YY3X1cY6B2FZaI3+kfI5m/J37ZptCXnkaYwIoqNPQIPsbMi+yNhQ9UXTWpeTcWA534Dy/zdCyvq2+qDQQrQEd0cqnBVIj/0M1pDm2XQhNAJJRcgX4l5ya0GMpEokSDKvoiE+1zsq/Iw2RE+WfCQyrUS70ggNZ1Mf6pI2ZIuF382IeLSe7AlmwPaPaPHmF8g== 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: 2012-08/txt/msg00701.txt.bz2 --e89a8f3b9e1fb927ff04c7f89f3c Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1165 Here is an updated patch. I have changed the options to be as follows. 'info threads [-a] [ id ... | -r regex ]' -a enables sorting by thread name -r regex matches regex with thread names. I have not changed the threads array to a VEC as of yet. At this point it seems like more trouble than it's worth. But I suppose it could be done if people think it's necessary. On Thu, Aug 23, 2012 at 9:00 AM, Tom Tromey wrote: > > Sergio> Why not `-r regex'? I think it would be more clear. > > Me too. > > Sergio> Other commands (`sharedlibrary', `info variables', etc) take a regex as > Sergio> their first argument, without requiring a modifier like `-r'. If the > Sergio> "pipe" patch were already in, this alphabetical sorting would not be > Sergio> needed... Anyway, just thinking here. > > Piping is nice but I think it is also good to have options for common > cases. > > Sergio> I guess Tom did not suggest this because of performance per se, but > Sergio> rather because if you have to make a list in GDB then it is already a > Sergio> convention to use VEC for these things. > > Yeah. I thought it would make the code simpler. > > Tom --e89a8f3b9e1fb927ff04c7f89f3c Content-Type: application/octet-stream; name="thread_sorting_regex_with-a-r-options.patch" Content-Disposition: attachment; filename="thread_sorting_regex_with-a-r-options.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h68l12u20 Content-length: 30187 RnJvbSBlZmVmN2I3OTZmNTI4ODM1ZDE4YmI3NzgzMDQ4MDVlNjIyODY5NWZk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBYXJvbiBHYW1ibGUg PGFnYW1ibGVAZ29vZ2xlLmNvbT4KRGF0ZTogVGh1LCAyMyBBdWcgMjAxMiAx ODowNDowMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHNvcnRpbmcgd2l0aCAt YSAtciByZWdleCBvcHRpb25zCgotLS0KIGdkYi9kb2MvZ2RiLnRleGluZm8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQogZ2Ri L2dkYnRocmVhZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA2ICstCiBnZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL01ha2Vm aWxlLmluICAgICAgICAgICAgICB8ICAgIDIgKy0KIGdkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvaW5mby10aHJlYWQtc29ydC1yZWdleC5jIHwgIDEyMiAr KysrKysrCiAuLi4vZ2RiLnRocmVhZHMvaW5mby10aHJlYWQtc29ydC1yZWdl eC5leHAgICAgICAgICB8ICAgNTggKysrCiBnZGIvdGhyZWFkLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNzQgKysrKysr KysrKysrKy0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgNDQxIGluc2VydGlv bnMoKyksIDEzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2luZm8tdGhyZWFkLXNvcnQtcmVn ZXguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvaW5mby10aHJlYWQtc29ydC1yZWdleC5leHAKCmRpZmYgLS1naXQg YS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpp bmRleCAwOGJhOTJkLi4zZTZjMTA4IDEwMDY0NAotLS0gYS9nZGIvZG9jL2dk Yi50ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KQEAgLTI3NTEs MTAgKzI3NTEsMTMgQEAgbnVtYmVyLS0tYWx3YXlzIGEgc2luZ2xlIGludGVn ZXItLS13aXRoIGVhY2ggdGhyZWFkIGluIHlvdXIgcHJvZ3JhbS4KIAogQHRh YmxlIEBjb2RlCiBAa2luZGV4IGluZm8gdGhyZWFkcwotQGl0ZW0gaW5mbyB0 aHJlYWRzIEBye1t9QHZhcntpZH1AZG90c3t9QHJ7XX0KLURpc3BsYXkgYSBz dW1tYXJ5IG9mIGFsbCB0aHJlYWRzIGN1cnJlbnRseSBpbiB5b3VyIHByb2dy YW0uICBPcHRpb25hbCAKLWFyZ3VtZW50IEB2YXJ7aWR9QGRvdHN7fSBpcyBv bmUgb3IgbW9yZSB0aHJlYWQgaWRzIHNlcGFyYXRlZCBieSBzcGFjZXMsIGFu ZAotbWVhbnMgdG8gcHJpbnQgaW5mb3JtYXRpb24gb25seSBhYm91dCB0aGUg c3BlY2lmaWVkIHRocmVhZCBvciB0aHJlYWRzLgorQGl0ZW0gaW5mbyB0aHJl YWRzIEBye1t9LWFAcntdfSBAcntbfUB2YXJ7aWR9QGRvdHN7fUBie3x9LXIg QHZhcntyZWdleH1AcntdfQorRGlzcGxheSBhIHN1bW1hcnkgb2YgYWxsIHRo cmVhZHMgY3VycmVudGx5IGluIHlvdXIgcHJvZ3JhbS4gIFVzZSB0aGUgb3B0 aW9uCistYSB0byBzb3J0IHRocmVhZHMgYWxwaGFiZXRpY2FsbHkgYnkgbmFt ZS4gIFNlbGVjdGlvbiBvZiB0aHJlYWRzIGNhbiBiZSBkb25lCitieSBzdXBw bHlpbmcgYSBsaXN0IG9yIHJhbmdlcyBvZiB0aHJlYWQgSUQncywgb3IgYnkg dXNpbmcgdGhlIC1yIEB2YXJ7cmVnZXh9CitvcHRpb24gdG8gZGlzcGxheSBv bmx5IHRocmVhZHMgd2l0aCBuYW1lcyBtYXRjaGluZyBAdmFye3JlZ2V4fS4g IFNwYWNlcworYmV0d2VlbiB0aGUgLXIgYW5kIEB2YXJ7cmVnZXh9IGFyZSBp Z25vcmVkLgorCiBAdmFsdWV7R0RCTn0gZGlzcGxheXMgZm9yIGVhY2ggdGhy ZWFkIChpbiB0aGlzIG9yZGVyKToKIAogQGVudW1lcmF0ZQpkaWZmIC0tZ2l0 IGEvZ2RiL2dkYnRocmVhZC5oIGIvZ2RiL2dkYnRocmVhZC5oCmluZGV4IDAy NTA1NTUuLjI0NjNjZWEgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJ0aHJlYWQuaAor KysgYi9nZGIvZ2RidGhyZWFkLmgKQEAgLTEzOCw2ICsxMzgsMTAgQEAgc3Ry dWN0IHRocmVhZF9pbmZvCiAgICAgIGlmIHRoZSB0aHJlYWQgZG9lcyBub3Qg aGF2ZSBhIHVzZXItZ2l2ZW4gbmFtZS4gICovCiAgIGNoYXIgKm5hbWU7CiAK KyAgLyogVGhlIG5hbWUgb2YgdGhlIHRocmVhZCwgYXMgY2FjaGVkIGJ5IHBy aW50X3RocmVhZF9pbmZvLgorICAgICBVc2VkIGZvciBzb3J0aW5nIGluZm8g dGhyZWFkcyBvdXRwdXQuICAqLworICBjaGFyICpjYWNoZWRfbmFtZTsKKwog ICAvKiBOb24temVybyBtZWFucyB0aGUgdGhyZWFkIGlzIGV4ZWN1dGluZy4g IE5vdGU6IHRoaXMgaXMgZGlmZmVyZW50CiAgICAgIGZyb20gc2F5aW5nIHRo YXQgdGhlcmUgaXMgYW4gYWN0aXZlIHRhcmdldCBhbmQgd2UgYXJlIHN0b3Bw ZWQgYXQKICAgICAgYSBicmVha3BvaW50LCBmb3IgaW5zdGFuY2UuICBUaGlz IGlzIGEgcmVhbCBpbmRpY2F0b3Igd2hldGhlciB0aGUKQEAgLTM4NSw3ICsz ODksNyBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnRocmVh ZF9jbWRfbGlzdDsKICAgIGBzZXQgcHJpbnQgdGhyZWFkLWV2ZW50cycuICAq LwogZXh0ZXJuIGludCBwcmludF90aHJlYWRfZXZlbnRzOwogCi1leHRlcm4g dm9pZCBwcmludF90aHJlYWRfaW5mbyAoc3RydWN0IHVpX291dCAqdWlvdXQs IGNoYXIgKnRocmVhZHMsCitleHRlcm4gdm9pZCBwcmludF90aHJlYWRfaW5m byAoc3RydWN0IHVpX291dCAqdWlvdXQsIGNoYXIgKmFyZ3MsCiAJCQkgICAg ICAgaW50IHBpZCk7CiAKIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9j bGVhbnVwX3Jlc3RvcmVfY3VycmVudF90aHJlYWQgKHZvaWQpOwpkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9NYWtlZmlsZS5pbiBi L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvTWFrZWZpbGUuaW4KaW5kZXgg OGY5Zjg2Ny4uMmQyNGJhNCAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9NYWtlZmlsZS5pbgorKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL01ha2VmaWxlLmluCkBAIC01LDcgKzUsNyBAQCBFWEVDVVRB QkxFUyA9IGF0dGFjaC1pbnRvLXNpZ25hbC1ub3RociBhdHRhY2gtaW50by1z aWduYWwtdGhyIFwKIAlhdHRhY2gtc3RvcHBlZCBhdHRhY2hzdG9wLW10IFwK IAlicF9pbl90aHJlYWQgY3VycmVudC1sd3AtZGVhZCBleGVjbCBleGVjbDEg Zm9yay1jaGlsZC10aHJlYWRzIFwKIAlmb3JrLXRocmVhZC1wZW5kaW5nIGdj b3JlLXB0aHJlYWRzIGhhbmQtY2FsbC1pbi10aHJlYWRzIFwKLQlpYTY0LXNp Z2lsbCBpbnRlcnJ1cHRlZC1oYW5kLWNhbGwga2lsbGVkIGxpbnV4LWRwIFwK KwlpYTY0LXNpZ2lsbCBpbmZvLXRocmVhZC1zb3J0LXJlZ2V4IGludGVycnVw dGVkLWhhbmQtY2FsbCBraWxsZWQgbGludXgtZHAgXAogCWxvY2FsLXdhdGNo LXdyb25nLXRocmVhZCBtYW55dGhyZWFkcyBtdWx0aS1jcmVhdGUgcGVuZGlu Zy1zdGVwIFwKIAlwcmludC10aHJlYWRzIHB0aHJlYWRzIHB0aHJlYWRfY29u ZF93YWl0IHNjaGVkbG9jayBzaWd0aHJlYWQgXAogCXN0YXRpY3RocmVhZHMg c3dpdGNoLXRocmVhZHMgdGhyZWFkLWV4ZWNsIHRocmVhZC1zcGVjaWZpYyBc CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2luZm8t dGhyZWFkLXNvcnQtcmVnZXguYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvaW5mby10aHJlYWQtc29ydC1yZWdleC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjk4OTc5Y2UKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2luZm8tdGhyZWFkLXNvcnQt cmVnZXguYwpAQCAtMCwwICsxLDEyMiBAQAorLyogVGVzdCBjYXNlIGZvciBp bmZvIHRocmVhZHMgc29ydCBhbmQgcmVnZXggbWF0Y2hpbmcuCisKKyAgIENv cHlyaWdodCAyMDA4LCAyMDEwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPHB0aHJl YWQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o PgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKwor I2lmbmRlZiBOUl9USFJFQURTCisjZGVmaW5lIE5SX1RIUkVBRFMgNAorI2Vu ZGlmCisKK2ludCB0aHJlYWRfY291bnQ7CisKK3B0aHJlYWRfbXV0ZXhfdCB0 aHJlYWRfY291bnRfbXV0ZXg7CisKK3B0aHJlYWRfY29uZF90IHRocmVhZF9j b3VudF9jb25kdmFyOworCit2b2lkCitpbmNyX3RocmVhZF9jb3VudCAodm9p ZCkKK3sKKyAgcHRocmVhZF9tdXRleF9sb2NrICgmdGhyZWFkX2NvdW50X211 dGV4KTsKKyAgKyt0aHJlYWRfY291bnQ7CisgIGlmICh0aHJlYWRfY291bnQg PT0gTlJfVEhSRUFEUykKKyAgICBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhy ZWFkX2NvdW50X2NvbmR2YXIpOworICBwdGhyZWFkX211dGV4X3VubG9jayAo JnRocmVhZF9jb3VudF9tdXRleCk7Cit9CisKK3ZvaWQKK2NvbmRfd2FpdCAo cHRocmVhZF9jb25kX3QgKmNvbmQsIHB0aHJlYWRfbXV0ZXhfdCAqbXV0KQor eworICBwdGhyZWFkX211dGV4X2xvY2sgKG11dCk7CisgIHB0aHJlYWRfY29u ZF93YWl0IChjb25kLCBtdXQpOworICBwdGhyZWFkX211dGV4X3VubG9jayAo bXV0KTsKK30KKwordm9pZAorbm9yZXR1cm4gKHZvaWQpCit7CisgIHB0aHJl YWRfbXV0ZXhfdCBtdXQ7CisgIHB0aHJlYWRfY29uZF90IGNvbmQ7CisKKyAg cHRocmVhZF9tdXRleF9pbml0ICgmbXV0LCBOVUxMKTsKKyAgcHRocmVhZF9j b25kX2luaXQgKCZjb25kLCBOVUxMKTsKKworICAvKiBXYWl0IGZvciBhIGNv bmRpdGlvbiB0aGF0IHdpbGwgbmV2ZXIgYmUgc2lnbmFsZWQsIHNvIHdlIGVm ZmVjdGl2ZWx5CisgICAgIGJsb2NrIHRoZSB0aHJlYWQgaGVyZS4gICovCisg IGNvbmRfd2FpdCAoJmNvbmQsICZtdXQpOworfQorCit2b2lkICoKK2ZvcmV2 ZXJfcHRocmVhZCAodm9pZCAqdW51c2VkKQoreworICBpbmNyX3RocmVhZF9j b3VudCAoKTsKKyAgbm9yZXR1cm4gKCk7Cit9CisKKy8qIFdhaXQgdW50aWwg YWxsIHRocmVhZHMgYXJlIHJ1bm5pbmcuICAqLworCit2b2lkCit3YWl0X2Fs bF90aHJlYWRzX3J1bm5pbmcgKHZvaWQpCit7CisgIHB0aHJlYWRfbXV0ZXhf bG9jayAoJnRocmVhZF9jb3VudF9tdXRleCk7CisgIGlmICh0aHJlYWRfY291 bnQgPT0gTlJfVEhSRUFEUykKKyAgICB7CisgICAgICBwdGhyZWFkX211dGV4 X3VubG9jayAoJnRocmVhZF9jb3VudF9tdXRleCk7CisgICAgICByZXR1cm47 CisgICAgfQorICBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZF9jb3VudF9j b25kdmFyLCAmdGhyZWFkX2NvdW50X211dGV4KTsKKyAgaWYgKHRocmVhZF9j b3VudCA9PSBOUl9USFJFQURTKQorICAgIHsKKyAgICAgIHB0aHJlYWRfbXV0 ZXhfdW5sb2NrICgmdGhyZWFkX2NvdW50X211dGV4KTsKKyAgICAgIHJldHVy bjsKKyAgICB9CisgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGhyZWFkX2Nv dW50X211dGV4KTsKKyAgcHJpbnRmICgiZmFpbGVkIHdhaXRpbmcgZm9yIGFs bCB0aHJlYWRzIHRvIHN0YXJ0XG4iKTsKKyAgYWJvcnQgKCk7Cit9CisKKy8q IENhbGxlZCB3aGVuIGFsbCB0aHJlYWRzIGFyZSBydW5uaW5nLgorICAgRWFz eSBwbGFjZSBmb3IgYSBicmVha3BvaW50LiAgKi8KKwordm9pZAorYWxsX3Ro cmVhZHNfcnVubmluZyAodm9pZCkKK3sKK30KKworaW50CittYWluICh2b2lk KQoreworICBwdGhyZWFkX3QgZm9yZXZlcltOUl9USFJFQURTXTsKKyAgaW50 IGk7CisKKyAgcHRocmVhZF9tdXRleF9pbml0ICgmdGhyZWFkX2NvdW50X211 dGV4LCBOVUxMKTsKKyAgcHRocmVhZF9jb25kX2luaXQgKCZ0aHJlYWRfY291 bnRfY29uZHZhciwgTlVMTCk7CisKKyAgZm9yIChpID0gMDsgaSA8IE5SX1RI UkVBRFM7ICsraSkKKyAgICBwdGhyZWFkX2NyZWF0ZSAoJmZvcmV2ZXJbaV0s IE5VTEwsIGZvcmV2ZXJfcHRocmVhZCwgTlVMTCk7CisKKyAgd2FpdF9hbGxf dGhyZWFkc19ydW5uaW5nICgpOworICBhbGxfdGhyZWFkc19ydW5uaW5nICgp OworCisgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL2luZm8tdGhyZWFkLXNvcnQtcmVnZXguZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9pbmZvLXRocmVhZC1zb3J0LXJl Z2V4LmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h NDllZWRmCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9pbmZvLXRocmVhZC1zb3J0LXJlZ2V4LmV4cApAQCAtMCwwICsx LDU4IEBACisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0yMDA4LCAyMDEw LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMuCisKKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisKKyMgVGVzdCBzb3J0aW5nIGFuZCByZWdleCBtYXRj aGluZyBpbiBpbmZvIHRocmVhZHMuCisKK3NldCBOUl9USFJFQURTIDQKKwor c3RhbmRhcmRfdGVzdGZpbGUKKworaWYge1tnZGJfY29tcGlsZV9wdGhyZWFk cyAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyAiYWRkaXRpb25hbF9mbGFncz0t RE5SX1RIUkVBRFM9JE5SX1RIUkVBRFMiXV0gIT0gIiIgfSB7CisgICAgcmV0 dXJuIC0xCit9CisKK2NsZWFuX3Jlc3RhcnQgJHtiaW5maWxlfQorCitpZiB7 ICFbcnVudG9fbWFpbl0gfSB7CisgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1h aW4iCisgICAgcmV0dXJuIDAKK30KKworZ2RiX3Rlc3QgImJyZWFrIGFsbF90 aHJlYWRzX3J1bm5pbmciIFwKKwkgIkJyZWFrcG9pbnQgMiBhdCAuKjogZmls ZSAuKiR7c3JjZmlsZX0sIGxpbmUgLioiIFwKKwkgImJyZWFrcG9pbnQgb24g YWxsX3RocmVhZHNfcnVubmluZyIKKworIyBSdW4gdGhlIHByb2dyYW0gYW5k IG1ha2Ugc3VyZSBHREIgcmVwb3J0cyB0aGF0IHdlIHN0b3BwZWQgYWZ0ZXIK KyMgaGl0dGluZyBicmVha3BvaW50IDIgaW4gYWxsX3RocmVhZHNfcnVubmlu ZygpLgorCitnZGJfdGVzdCAiY29udGludWUiIFwKKwkgIi4qQnJlYWtwb2lu dCAyLCBhbGxfdGhyZWFkc19ydW5uaW5nICgpLioiIFwKKwkgInJ1biB0byBh bGxfdGhyZWFkc19ydW5uaW5nIgorCisjIFRlc3QgdGhhdCB0aGUgbm8gdGhy ZWFkcyBtYXRjaCBtZXNzYWdlIHByaW50cyBjb3JyZWN0bHkuCitnZGJfdGVz dCAiaW5mbyB0aHJlYWRzIC1yIFwkZm9vIiBcCisJICJObyB0aHJlYWRzIG1h dGNoICdcXFwkZm9vJ1wuIiBcCisJICJpbmZvIHRocmVhZCBubyBtYXRjaCB0 ZXN0IgorCitnZGJfdGVzdF9ub19vdXRwdXQgInRocmVhZCBuYW1lIGEiICJz ZXQgdGhyZWFkIG5hbWUgdG8gYSIKKworZ2RiX3Rlc3QgImluZm8gdGhyZWFk cyAtYSIgXAorICAgIlxccytJZFxccytUYXJnZXRcXHMrSWRcXHMrRnJhbWUg XHJcblxcKlxcXHMrXFxcZCtcXFxzK1RocmVhZFxcXHMrMHhcW0EtRmEtZjAt OVxdKyBcXFwoTFdQIFxcXGQrXFxcKSBcImFcIi4qIiBcCisgICAiY2hlY2sg dGhyZWFkIGEgaXMgZmlyc3QiCisKK2dkYl90ZXN0ICJpbmZvIHRocmVhZHMg LXIgXmluZm8iIFwKKyAgICJcXHMrSWRcXHMrVGFyZ2V0XFxzK0lkXFxzK0Zy YW1lIFxyXG5cXFxzK1xcXGQrXFxccytUaHJlYWRcXFxzKzB4XFtBLUZhLWYw LTlcXSsgXFxcKExXUCBcXFxkK1xcXCkgXCJpbmZvLipcIi4qIiBcCisgICAi ZmlsdGVyIG91dCB0aHJlYWQgbmFtZWQgYSIKZGlmZiAtLWdpdCBhL2dkYi90 aHJlYWQuYyBiL2dkYi90aHJlYWQuYwppbmRleCA3ZThlZWM1Li42OGIyZGFj IDEwMDY0NAotLS0gYS9nZGIvdGhyZWFkLmMKKysrIGIvZ2RiL3RocmVhZC5j CkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgX2luaXRpYWxpemVfdGhyZWFkICh2 b2lkKTsKIC8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICov CiAKIHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkX2xpc3QgPSBOVUxMOwor c3RhdGljIGludCB0aHJlYWRfbGlzdF9zaXplID0gMDsKIHN0YXRpYyBpbnQg aGlnaGVzdF90aHJlYWRfbnVtOwogCiBzdGF0aWMgdm9pZCB0aHJlYWRfY29t bWFuZCAoY2hhciAqdGlkc3RyLCBpbnQgZnJvbV90dHkpOwpAQCAtMTMyLDYg KzEzMyw3IEBAIGZyZWVfdGhyZWFkIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRw KQogCXhmcmVlICh0cC0+cHJpdmF0ZSk7CiAgICAgfQogCisgIHRocmVhZF9s aXN0X3NpemUtLTsKICAgeGZyZWUgKHRwLT5uYW1lKTsKICAgeGZyZWUgKHRw KTsKIH0KQEAgLTE1Myw2ICsxNTUsNyBAQCBpbml0X3RocmVhZF9saXN0ICh2 b2lkKQogICAgIH0KIAogICB0aHJlYWRfbGlzdCA9IE5VTEw7CisgIHRocmVh ZF9saXN0X3NpemUgPSAwOwogfQogCiAvKiBBbGxvY2F0ZSBhIG5ldyB0aHJl YWQgd2l0aCB0YXJnZXQgaWQgUFRJRCBhbmQgYWRkIGl0IHRvIHRoZSB0aHJl YWQKQEAgLTE2OSw2ICsxNzIsNyBAQCBuZXdfdGhyZWFkIChwdGlkX3QgcHRp ZCkKICAgdHAtPm51bSA9ICsraGlnaGVzdF90aHJlYWRfbnVtOwogICB0cC0+ bmV4dCA9IHRocmVhZF9saXN0OwogICB0aHJlYWRfbGlzdCA9IHRwOworICB0 aHJlYWRfbGlzdF9zaXplKys7CiAKICAgLyogTm90aGluZyB0byBmb2xsb3cg eWV0LiAgKi8KICAgdHAtPnBlbmRpbmdfZm9sbG93LmtpbmQgPSBUQVJHRVRf V0FJVEtJTkRfU1BVUklPVVM7CkBAIC03NDgsMjUgKzc1MiwxOTUgQEAgZmlu aXNoX3RocmVhZF9zdGF0ZV9jbGVhbnVwICh2b2lkICphcmcpCiAgIGZpbmlz aF90aHJlYWRfc3RhdGUgKCpwdGlkX3ApOwogfQogCisvKiBSZXR1cm5zIHRy dWUgaWYgdXNlciByZXF1ZXN0ZWQgdGhlIHRocmVhZC4gICovCisKK3N0YXRp YyBpbnQKK3ByaW50X3RocmVhZF9maWx0ZXJfY2hlY2sgKHN0cnVjdCB0aHJl YWRfaW5mbyAqdHAsIGNoYXIgKnJlcXVlc3RlZF90aHJlYWRzLAorCQkJICAg aW50IHBpZCwgcmVnZXhfdCAqcHJlZykKK3sKKyAgaWYgKHByZWcpCisgICAg eworICAgICAgaW50IGVyciA9IHJlZ2V4ZWMgKHByZWcsIHRwLT5jYWNoZWRf bmFtZSA/IHRwLT5jYWNoZWRfbmFtZSA6ICIiLAorCQkJIDAsIE5VTEwsIDAp OworICAgICAgaWYgKGVyciA9PSAwKQorCXJldHVybiBUUlVFOworICAgICAg ZWxzZQorCXJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgLyogTm8gcmVndWxh ciBleHByZXNzaW9uIHdhcyBzdXBwbGllZCwgc2VlIGlmIHRoZXJlJ3MgYSBt YXRjaCB0aGUgbGlzdAorICAgICBvZiB0aHJlYWQgaWQncy4gICovCisgIGlm ICghbnVtYmVyX2lzX2luX2xpc3QgKHJlcXVlc3RlZF90aHJlYWRzLCB0cC0+ bnVtKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKHBpZCAhPSAtMSAm JiBQSURHRVQgKHRwLT5wdGlkKSAhPSBwaWQpCisgICAgeworICAgICAgaWYg KHJlcXVlc3RlZF90aHJlYWRzICE9IE5VTEwgJiYgKnJlcXVlc3RlZF90aHJl YWRzICE9ICdcMCcpCisJZXJyb3IgKF8oIlJlcXVlc3RlZCB0aHJlYWQgbm90 IGZvdW5kIGluIHJlcXVlc3RlZCBwcm9jZXNzIikpOworICAgICAgcmV0dXJu IEZBTFNFOworICAgIH0KKworICBpZiAodHAtPnN0YXRlID09IFRIUkVBRF9F WElURUQpCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOwor fQorCisKKy8qIFVzZWQgdG8gU29ydCB0aHJlYWRzIGluIGxleGljb2dyYXBo aWMgb3JkZXIgYnkgbmFtZS4gICovCisKK3N0YXRpYyBpbnQKK3ByaW50X3Ro cmVhZF9zb3J0X2NtcCAoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAy KQoreworICBjb25zdCBjaGFyICpuYW1lMSA9ICgqKHN0cnVjdCB0aHJlYWRf aW5mbyAqKikgcDEpLT5jYWNoZWRfbmFtZTsKKyAgY29uc3QgY2hhciAqbmFt ZTIgPSAoKihzdHJ1Y3QgdGhyZWFkX2luZm8gKiopIHAyKS0+Y2FjaGVkX25h bWU7CisgIGlmIChuYW1lMSAmJiBuYW1lMikKKyAgICByZXR1cm4gc3RyY21w IChuYW1lMSwgbmFtZTIpOworCisgIC8qIEluIGNhc2Ugd2UgcmVjZWl2ZSBO VUxMIHBvaW50ZXJzIGluc3RlYWQgb2Ygc3RyaW5ncy4KKyAgICAgTlVMTCBw b2ludGVycyBhcmUgc29ydGVkIGFzIGVtcHR5IHN0cmluZ3MuICAqLworICBp ZiAoIW5hbWUxICYmIG5hbWUyKQorICAgIHJldHVybiAtMTsKKyAgaWYgKCFu YW1lMiAmJiBuYW1lMSkKKyAgICByZXR1cm4gMTsKKworICByZXR1cm4gMDsK K30KKworLyogUHJpbnRzIHRoZSBpbmZvIGZvciBhIHNpbmdsZSB0aHJlYWQu CisgICBDYWxsZWQgYnkgcHJpbnRfdGhyZWFkX2luZm8gZm9yIGVhY2ggdGhy ZWFkLiAgKi8KKworc3RhdGljIHZvaWQKK3ByaW50X3RocmVhZF9pbmZvX3Np bmdsZSAoc3RydWN0IHVpX291dCAqdWlvdXQsIHN0cnVjdCB0aHJlYWRfaW5m byAqdHAsCisJCQkgICAgICAgcHRpZF90IGN1cnJlbnRfcHRpZCkKK3sKKyAg c3RydWN0IGNsZWFudXAgKnVpb3V0X2NsZWFudXAKKyAgICA9IG1ha2VfY2xl YW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7Cisg IGludCBjb3JlOworICBjaGFyICpleHRyYV9pbmZvLCAqbmFtZSwgKnRhcmdl dF9pZDsKKworICBpZiAodWlfb3V0X2lzX21pX2xpa2VfcCAodWlvdXQpKQor ICAgIHsKKyAgICAgIC8qIENvbXBhdGliaWxpdHkuICAqLworICAgICAgaWYg KHB0aWRfZXF1YWwgKHRwLT5wdGlkLCBjdXJyZW50X3B0aWQpKQorCXVpX291 dF90ZXh0ICh1aW91dCwgIiogIik7CisgICAgICBlbHNlCisJdWlfb3V0X3Rl eHQgKHVpb3V0LCAiICAiKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg ICAgIGlmIChwdGlkX2VxdWFsICh0cC0+cHRpZCwgY3VycmVudF9wdGlkKSkK Kwl1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImN1cnJlbnQiLCAiKiIp OworICAgICAgZWxzZQorCXVpX291dF9maWVsZF9za2lwICh1aW91dCwgImN1 cnJlbnQiKTsKKyAgICB9CisKKyAgdWlfb3V0X2ZpZWxkX2ludCAodWlvdXQs ICJpZCIsIHRwLT5udW0pOworCisgIC8qIEZvciB0aGUgQ0xJLCB3ZSBzdHVm ZiBldmVyeXRoaW5nIGludG8gdGhlIHRhcmdldC1pZCBmaWVsZC4KKyAgICAg VGhpcyBpcyBhIGdyb3NzIGhhY2sgdG8gbWFrZSB0aGUgb3V0cHV0IGNvbWUg b3V0IGxvb2tpbmcKKyAgICAgY29ycmVjdC4gIFRoZSB1bmRlcmx5aW5nIHBy b2JsZW0gaGVyZSBpcyB0aGF0IHVpLW91dCBoYXMgbm8KKyAgICAgd2F5IHRv IHNwZWNpZnkgdGhhdCBhIGZpZWxkJ3Mgc3BhY2UgYWxsb2NhdGlvbiBzaG91 bGQgYmUKKyAgICAgc2hhcmVkIGJ5IHNldmVyYWwgZmllbGRzLiAgRm9yIE1J LCB3ZSBkbyB0aGUgcmlnaHQgdGhpbmcKKyAgICAgaW5zdGVhZC4gICovCisK KyAgdGFyZ2V0X2lkID0gdGFyZ2V0X3BpZF90b19zdHIgKHRwLT5wdGlkKTsK KyAgZXh0cmFfaW5mbyA9IHRhcmdldF9leHRyYV90aHJlYWRfaW5mbyAodHAp OworICBpZiAodHAtPmNhY2hlZF9uYW1lKQorICAgIG5hbWUgPSB0cC0+Y2Fj aGVkX25hbWU7CisgIGVsc2UKKyAgICBuYW1lID0gdHAtPm5hbWUgPyB0cC0+ bmFtZSA6IHRhcmdldF90aHJlYWRfbmFtZSAodHApOworCisgIGlmICh1aV9v dXRfaXNfbWlfbGlrZV9wICh1aW91dCkpCisgICAgeworICAgICAgdWlfb3V0 X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ0YXJnZXQtaWQiLCB0YXJnZXRfaWQp OworICAgICAgaWYgKGV4dHJhX2luZm8pCisJdWlfb3V0X2ZpZWxkX3N0cmlu ZyAodWlvdXQsICJkZXRhaWxzIiwgZXh0cmFfaW5mbyk7CisgICAgICBpZiAo bmFtZSkKKwl1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgIm5hbWUiLCBu YW1lKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBzdHJ1Y3QgY2xl YW51cCAqc3RyX2NsZWFudXA7CisgICAgICBjaGFyICpjb250ZW50czsKKwor ICAgICAgaWYgKGV4dHJhX2luZm8gJiYgbmFtZSkKKwljb250ZW50cyA9IHhz dHJwcmludGYgKCIlcyBcIiVzXCIgKCVzKSIsIHRhcmdldF9pZCwKKwkJCSAg ICAgICBuYW1lLCBleHRyYV9pbmZvKTsKKyAgICAgIGVsc2UgaWYgKGV4dHJh X2luZm8pCisJY29udGVudHMgPSB4c3RycHJpbnRmICgiJXMgKCVzKSIsIHRh cmdldF9pZCwgZXh0cmFfaW5mbyk7CisgICAgICBlbHNlIGlmIChuYW1lKQor CWNvbnRlbnRzID0geHN0cnByaW50ZiAoIiVzIFwiJXNcIiIsIHRhcmdldF9p ZCwgbmFtZSk7CisgICAgICBlbHNlCisJY29udGVudHMgPSB4c3RyZHVwICh0 YXJnZXRfaWQpOworICAgICAgc3RyX2NsZWFudXAgPSBtYWtlX2NsZWFudXAg KHhmcmVlLCBjb250ZW50cyk7CisKKyAgICAgIHVpX291dF9maWVsZF9zdHJp bmcgKHVpb3V0LCAidGFyZ2V0LWlkIiwgY29udGVudHMpOworICAgICAgZG9f Y2xlYW51cHMgKHN0cl9jbGVhbnVwKTsKKyAgICB9CisKKyAgaWYgKHRwLT5z dGF0ZSA9PSBUSFJFQURfUlVOTklORykKKyAgICB1aV9vdXRfdGV4dCAodWlv dXQsICIocnVubmluZylcbiIpOworICBlbHNlCisgICAgeworICAgICAgLyog VGhlIHN3aXRjaCBiZWxvdyBwdXRzIHVzIGF0IHRoZSB0b3Agb2YgdGhlIHN0 YWNrIChsZWFmCisJIGZyYW1lKS4gICovCisgICAgICBzd2l0Y2hfdG9fdGhy ZWFkICh0cC0+cHRpZCk7CisgICAgICBwcmludF9zdGFja19mcmFtZSAoZ2V0 X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSwKKwkgIC8qIEZvciBNSSBvdXRwdXQs IHByaW50IGZyYW1lIGxldmVsLiAgKi8KKwkgIHVpX291dF9pc19taV9saWtl X3AgKHVpb3V0KSwKKwkgIExPQ0FUSU9OKTsKKyAgICB9CisKKyAgaWYgKHVp X291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKKyAgICB7CisgICAgICBjaGFy ICpzdGF0ZSA9ICJzdG9wcGVkIjsKKworICAgICAgaWYgKHRwLT5zdGF0ZSA9 PSBUSFJFQURfUlVOTklORykKKwlzdGF0ZSA9ICJydW5uaW5nIjsKKyAgICAg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic3RhdGUiLCBzdGF0ZSk7 CisgICAgfQorCisgIGNvcmUgPSB0YXJnZXRfY29yZV9vZl90aHJlYWQgKHRw LT5wdGlkKTsKKyAgaWYgKHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSAm JiBjb3JlICE9IC0xKQorICAgIHVpX291dF9maWVsZF9pbnQgKHVpb3V0LCAi Y29yZSIsIGNvcmUpOworCisgIGRvX2NsZWFudXBzICh1aW91dF9jbGVhbnVw KTsKK30KKworLyogQ2FjaGVzIHRoZSBuYW1lIHRoYXQgd2lsbCBiZSBzaG93 biB0byB0aGUgdXNlciBmb3IgYSB0aHJlYWQuCisgICBXZSBrZWVwIHRyYWNr IG9mIHRoaXMgZm9yIHNvcnRpbmcgcHVycG9zZXMuICAqLworCitzdGF0aWMg dm9pZAordGhyZWFkX2NhY2hlX25hbWUgKHN0cnVjdCB0aHJlYWRfaW5mbyAq dHApCit7CisgIC8qIERvZXMgbm90IG5lZWQgdG8gYmUgZnJlZWQsIGlzIG9u bHkgdHJhbnNpZW50LiAgKi8KKyAgdHAtPmNhY2hlZF9uYW1lID0gdHAtPm5h bWUgPyB0cC0+bmFtZSA6IHRhcmdldF90aHJlYWRfbmFtZSAodHApOworfQor CiAvKiBQcmludHMgdGhlIGxpc3Qgb2YgdGhyZWFkcyBhbmQgdGhlaXIgZGV0 YWlscyBvbiBVSU9VVC4KICAgIFRoaXMgaXMgYSB2ZXJzaW9uIG9mICdpbmZv X3RocmVhZHNfY29tbWFuZCcgc3VpdGFibGUgZm9yCiAgICB1c2UgZnJvbSBN SS4KLSAgIElmIFJFUVVFU1RFRF9USFJFQUQgaXMgbm90IC0xLCBpdCdzIHRo ZSBHREIgaWQgb2YgdGhlIHRocmVhZAotICAgdGhhdCBzaG91bGQgYmUgcHJp bnRlZC4gIE90aGVyd2lzZSwgYWxsIHRocmVhZHMgYXJlCi0gICBwcmludGVk LgotICAgSWYgUElEIGlzIG5vdCAtMSwgb25seSBwcmludCB0aHJlYWRzIGZy b20gdGhlIHByb2Nlc3MgUElELgotICAgT3RoZXJ3aXNlLCB0aHJlYWRzIGZy b20gYWxsIGF0dGFjaGVkIFBJRHMgYXJlIHByaW50ZWQuCi0gICBJZiBib3Ro IFJFUVVFU1RFRF9USFJFQUQgYW5kIFBJRCBhcmUgbm90IC0xLCB0aGVuIHRo ZSB0aHJlYWQKLSAgIGlzIHByaW50ZWQgaWYgaXQgYmVsb25ncyB0byB0aGUg c3BlY2lmaWVkIHByb2Nlc3MuICBPdGhlcndpc2UsCi0gICBhbiBlcnJvciBp cyByYWlzZWQuICAqLworICAgUkVRVUVTVEVEX1RIUkVBRFMgaXMgZWl0aGVy IGEgbGlzdCBvZiBudW1lcmljIHRocmVhZCBJZCdzCisgICBvciB0aGUgY2hh cmFjdGVyICdyJyBmb2xsb3dlZCBieSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0 bworICAgbWF0Y2ggd2l0aCBlYWNoIHRocmVhZCdzIG5hbWUuIEFueSBzcGFj ZXMgYmV0d2VlbiB0aGUgJ3InIGFuZAorICAgdGhlIHJlZ3VsYXIgZXhwcmVz c2lvbiBhcmUgaWdub3JlZC4KKyAgIElmIG5laXRoZXIgaXMgc3VwcGxpZWQg dGhlbiBhbGwgdGhyZWFkcyBhcmUgcHJpbnRlZC4KKyAgIFRocmVhZHMgYXJl IHNvcnRlZCBieSBuYW1lIHVubGVzcyB3ZSBhcmUgc2VuZGluZyB0byBNSS4g ICovCisKIHZvaWQKLXByaW50X3RocmVhZF9pbmZvIChzdHJ1Y3QgdWlfb3V0 ICp1aW91dCwgY2hhciAqcmVxdWVzdGVkX3RocmVhZHMsIGludCBwaWQpCitw cmludF90aHJlYWRfaW5mbyAoc3RydWN0IHVpX291dCAqdWlvdXQsIGNoYXIg KmFyZ3MsIGludCBwaWQpCiB7CiAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHA7 CiAgIHB0aWRfdCBjdXJyZW50X3B0aWQ7CiAgIHN0cnVjdCBjbGVhbnVwICpv bGRfY2hhaW47Ci0gIGNoYXIgKmV4dHJhX2luZm8sICpuYW1lLCAqdGFyZ2V0 X2lkOwogICBpbnQgY3VycmVudF90aHJlYWQgPSAtMTsKKyAgc3RydWN0IHRo cmVhZF9pbmZvICoqdGhyZWFkcyA9IE5VTEw7CisgIGludCBuX3RocmVhZHMs IGksIHJldDsKKyAgaW50IGVuYWJsZV9zb3J0ID0gRkFMU0U7CisgIHJlZ2V4 X3QgcHJlZ19idWZmZXI7CisgIHJlZ2V4X3QgKnByZWcgPSBOVUxMOworICBj aGFyICpyZXF1ZXN0ZWRfdGhyZWFkcyA9IGFyZ3M7CiAKICAgdXBkYXRlX3Ro cmVhZF9saXN0ICgpOwogICBjdXJyZW50X3B0aWQgPSBpbmZlcmlvcl9wdGlk OwpAQCAtNzc0LDI3ICs5NDgsNzUgQEAgcHJpbnRfdGhyZWFkX2luZm8gKHN0 cnVjdCB1aV9vdXQgKnVpb3V0LCBjaGFyICpyZXF1ZXN0ZWRfdGhyZWFkcywg aW50IHBpZCkKICAgLyogV2UnbGwgYmUgc3dpdGNoaW5nIHRocmVhZHMgdGVt cG9yYXJpbHkuICAqLwogICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfcmVz dG9yZV9jdXJyZW50X3RocmVhZCAoKTsKIAorICAvKiBQcm9jZXNzIGFyZ3Vt ZW50IHN0cmluZyBhcmdzIGZvciBvcHRpb25zLiAgKi8KKyAgYXJncyA9IHNr aXBfc3BhY2VzIChhcmdzKTsKKyAgd2hpbGUgKGFyZ3MgJiYgKmFyZ3MgIT0g J1wwJykKKyAgICB7CisgICAgICBpZiAoKmFyZ3MgIT0gJy0nKQorCWJyZWFr OworICAgICAgaWYgKGFyZ3NbMV0gPT0gJ2EnKQorCXsKKwkgIGVuYWJsZV9z b3J0ID0gVFJVRTsKKwkgIGFyZ3MgPSBza2lwX3NwYWNlcyAoYXJncyArIDIp OworCSAgcmVxdWVzdGVkX3RocmVhZHMgPSBhcmdzOworCSAgY29udGludWU7 CisJfQorICAgICAgaWYgKGFyZ3NbMV0gPT0gJ3InKQorCXsKKwkgIGFyZ3Mg PSBza2lwX3NwYWNlcyAoJmFyZ3NbMl0pOworCSAgcmV0ID0gcmVnY29tcCAo JnByZWdfYnVmZmVyLCBhcmdzLCBSRUdfTk9TVUIpOworCSAgaWYgKHJldCA9 PSAwKQorCSAgICB7CisJICAgICAgcHJlZyA9ICZwcmVnX2J1ZmZlcjsKKwkg ICAgICBtYWtlX3JlZ2ZyZWVfY2xlYW51cCAocHJlZyk7CisJICAgIH0KKwkg IGVsc2UKKwkgICAgeworCSAgICAgIGNoYXIgKmVyciA9ICBnZXRfcmVnY29t cF9lcnJvciAocmV0LCAmcHJlZ19idWZmZXIpOworCSAgICAgIG1ha2VfY2xl YW51cCAoeGZyZWUsIGVycik7CisJICAgICAgZXJyb3IgKF8oIkludmFsaWQg cmVnZXhwICglcyk6ICVzIiksIGVyciwgcmVxdWVzdGVkX3RocmVhZHMpOwor CSAgICB9CisJICBicmVhazsKKwl9CisJZXJyb3IgKF8oIkJhZCBvcHRpb24g KCVzKSIpLCAmYXJnc1sxXSk7CisJYnJlYWs7CisgICAgfQorCiAgIC8qIEZv ciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3ZSBtYWtlIGEgbGlzdCBmb3Ig TUkuICBBIHRhYmxlIGlzCiAgICAgIHByZWZlcmFibGUgZm9yIHRoZSBDTEks IHRob3VnaCwgYmVjYXVzZSBpdCBzaG93cyB0YWJsZQotICAgICBoZWFkZXJz LiAgKi8KKyAgICAgaGVhZGVycy4KKyAgICAgV2UgZG8gbm90IHNvcnQgdGhl IGxpc3QgZm9yIE1JLiAgKi8KICAgaWYgKHVpX291dF9pc19taV9saWtlX3Ag KHVpb3V0KSkKLSAgICBtYWtlX2NsZWFudXBfdWlfb3V0X2xpc3RfYmVnaW5f ZW5kICh1aW91dCwgInRocmVhZHMiKTsKLSAgZWxzZQogICAgIHsKLSAgICAg IGludCBuX3RocmVhZHMgPSAwOworICAgICAgbWFrZV9jbGVhbnVwX3VpX291 dF9saXN0X2JlZ2luX2VuZCAodWlvdXQsICJ0aHJlYWRzIik7CiAKICAgICAg IGZvciAodHAgPSB0aHJlYWRfbGlzdDsgdHA7IHRwID0gdHAtPm5leHQpCiAJ ewotCSAgaWYgKCFudW1iZXJfaXNfaW5fbGlzdCAocmVxdWVzdGVkX3RocmVh ZHMsIHRwLT5udW0pKQotCSAgICBjb250aW51ZTsKKwkgIGlmIChwdGlkX2Vx dWFsICh0cC0+cHRpZCwgY3VycmVudF9wdGlkKSkKKwkgICAgY3VycmVudF90 aHJlYWQgPSB0cC0+bnVtOworCisJICBpZiAocHJpbnRfdGhyZWFkX2ZpbHRl cl9jaGVjayAodHAsIHJlcXVlc3RlZF90aHJlYWRzLCBwaWQsIE5VTEwpKQor CSAgICBwcmludF90aHJlYWRfaW5mb19zaW5nbGUgKHVpb3V0LCB0cCwgY3Vy cmVudF9wdGlkKTsKKwl9CisgICAgfQorICBlbHNlCisgICAgeworICAgICAg dGhyZWFkcyA9IHhtYWxsb2MgKHNpemVvZiAoKnRocmVhZHMpICogdGhyZWFk X2xpc3Rfc2l6ZSk7CisgICAgICBtYWtlX2NsZWFudXAgKGZyZWUsIHRocmVh ZHMpOwogCi0JICBpZiAocGlkICE9IC0xICYmIFBJREdFVCAodHAtPnB0aWQp ICE9IHBpZCkKLQkgICAgY29udGludWU7CisgICAgICBuX3RocmVhZHMgPSAw OworICAgICAgZm9yIChpID0gMCwgdHAgPSB0aHJlYWRfbGlzdDsgdHA7IHRw ID0gdHAtPm5leHQsICsraSkKKwl7CisJICB0aHJlYWRfY2FjaGVfbmFtZSAo dHApOworCSAgaWYgKHByaW50X3RocmVhZF9maWx0ZXJfY2hlY2sgKHRwLCBy ZXF1ZXN0ZWRfdGhyZWFkcywgcGlkLCBwcmVnKSkKKwkgICAgeworCSAgICAg IHRocmVhZHNbbl90aHJlYWRzXSA9IHRwOworCSAgICAgICsrbl90aHJlYWRz OworCSAgICB9CiAKLQkgIGlmICh0cC0+c3RhdGUgPT0gVEhSRUFEX0VYSVRF RCkKLQkgICAgY29udGludWU7CisJICBpZiAocHRpZF9lcXVhbCAodHAtPnB0 aWQsIGN1cnJlbnRfcHRpZCkpCisJICAgIGN1cnJlbnRfdGhyZWFkID0gdHAt Pm51bTsKIAotCSAgKytuX3RocmVhZHM7CiAJfQogCiAgICAgICBpZiAobl90 aHJlYWRzID09IDApCkBAIC04MDMsNyArMTAyNSw3IEBAIHByaW50X3RocmVh ZF9pbmZvIChzdHJ1Y3QgdWlfb3V0ICp1aW91dCwgY2hhciAqcmVxdWVzdGVk X3RocmVhZHMsIGludCBwaWQpCiAJICAgIHVpX291dF9tZXNzYWdlICh1aW91 dCwgMCwgXygiTm8gdGhyZWFkcy5cbiIpKTsKIAkgIGVsc2UKIAkgICAgdWlf b3V0X21lc3NhZ2UgKHVpb3V0LCAwLCBfKCJObyB0aHJlYWRzIG1hdGNoICcl cycuXG4iKSwKLQkJCSAgICByZXF1ZXN0ZWRfdGhyZWFkcyk7CisJCQkJCWFy Z3MpOwogCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAJICByZXR1cm47 CiAJfQpAQCAtODE1LDExNSArMTAzNywxNSBAQCBwcmludF90aHJlYWRfaW5m byAoc3RydWN0IHVpX291dCAqdWlvdXQsIGNoYXIgKnJlcXVlc3RlZF90aHJl YWRzLCBpbnQgcGlkKQogICAgICAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlv dXQsIDE3LCB1aV9sZWZ0LCAidGFyZ2V0LWlkIiwgIlRhcmdldCBJZCIpOwog ICAgICAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDEsIHVpX2xlZnQs ICJmcmFtZSIsICJGcmFtZSIpOwogICAgICAgdWlfb3V0X3RhYmxlX2JvZHkg KHVpb3V0KTsKLSAgICB9CiAKLSAgZm9yICh0cCA9IHRocmVhZF9saXN0OyB0 cDsgdHAgPSB0cC0+bmV4dCkKLSAgICB7Ci0gICAgICBzdHJ1Y3QgY2xlYW51 cCAqY2hhaW4yOwotICAgICAgaW50IGNvcmU7CiAKLSAgICAgIGlmICghbnVt YmVyX2lzX2luX2xpc3QgKHJlcXVlc3RlZF90aHJlYWRzLCB0cC0+bnVtKSkK LQljb250aW51ZTsKKyAgICAgIGlmIChlbmFibGVfc29ydCkKKwlxc29ydCAo dGhyZWFkcywgbl90aHJlYWRzLCBzaXplb2YgKCp0aHJlYWRzKSwgcHJpbnRf dGhyZWFkX3NvcnRfY21wKTsKIAotICAgICAgaWYgKHBpZCAhPSAtMSAmJiBQ SURHRVQgKHRwLT5wdGlkKSAhPSBwaWQpCisgICAgICBmb3IgKGkgPSAwOyBp IDwgbl90aHJlYWRzOyBpKyspCiAJewotCSAgaWYgKHJlcXVlc3RlZF90aHJl YWRzICE9IE5VTEwgJiYgKnJlcXVlc3RlZF90aHJlYWRzICE9ICdcMCcpCi0J ICAgIGVycm9yIChfKCJSZXF1ZXN0ZWQgdGhyZWFkIG5vdCBmb3VuZCBpbiBy ZXF1ZXN0ZWQgcHJvY2VzcyIpKTsKLQkgIGNvbnRpbnVlOworCSAgcHJpbnRf dGhyZWFkX2luZm9fc2luZ2xlICh1aW91dCwgdGhyZWFkc1tpXSwgY3VycmVu dF9wdGlkKTsKIAl9Ci0KLSAgICAgIGlmIChwdGlkX2VxdWFsICh0cC0+cHRp ZCwgY3VycmVudF9wdGlkKSkKLQljdXJyZW50X3RocmVhZCA9IHRwLT5udW07 Ci0KLSAgICAgIGlmICh0cC0+c3RhdGUgPT0gVEhSRUFEX0VYSVRFRCkKLQlj b250aW51ZTsKLQotICAgICAgY2hhaW4yID0gbWFrZV9jbGVhbnVwX3VpX291 dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKLQotICAgICAgaWYg KHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKLQl7Ci0JICAvKiBDb21w YXRpYmlsaXR5LiAgKi8KLQkgIGlmIChwdGlkX2VxdWFsICh0cC0+cHRpZCwg Y3VycmVudF9wdGlkKSkKLQkgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiKiAi KTsKLQkgIGVsc2UKLQkgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiICAiKTsK LQl9Ci0gICAgICBlbHNlCi0JewotCSAgaWYgKHB0aWRfZXF1YWwgKHRwLT5w dGlkLCBjdXJyZW50X3B0aWQpKQotCSAgICB1aV9vdXRfZmllbGRfc3RyaW5n ICh1aW91dCwgImN1cnJlbnQiLCAiKiIpOwotCSAgZWxzZQotCSAgICB1aV9v dXRfZmllbGRfc2tpcCAodWlvdXQsICJjdXJyZW50Iik7Ci0JfQotCi0gICAg ICB1aV9vdXRfZmllbGRfaW50ICh1aW91dCwgImlkIiwgdHAtPm51bSk7Ci0K LSAgICAgIC8qIEZvciB0aGUgQ0xJLCB3ZSBzdHVmZiBldmVyeXRoaW5nIGlu dG8gdGhlIHRhcmdldC1pZCBmaWVsZC4KLQkgVGhpcyBpcyBhIGdyb3NzIGhh Y2sgdG8gbWFrZSB0aGUgb3V0cHV0IGNvbWUgb3V0IGxvb2tpbmcKLQkgY29y cmVjdC4gIFRoZSB1bmRlcmx5aW5nIHByb2JsZW0gaGVyZSBpcyB0aGF0IHVp LW91dCBoYXMgbm8KLQkgd2F5IHRvIHNwZWNpZnkgdGhhdCBhIGZpZWxkJ3Mg c3BhY2UgYWxsb2NhdGlvbiBzaG91bGQgYmUKLQkgc2hhcmVkIGJ5IHNldmVy YWwgZmllbGRzLiAgRm9yIE1JLCB3ZSBkbyB0aGUgcmlnaHQgdGhpbmcKLQkg aW5zdGVhZC4gICovCi0KLSAgICAgIHRhcmdldF9pZCA9IHRhcmdldF9waWRf dG9fc3RyICh0cC0+cHRpZCk7Ci0gICAgICBleHRyYV9pbmZvID0gdGFyZ2V0 X2V4dHJhX3RocmVhZF9pbmZvICh0cCk7Ci0gICAgICBuYW1lID0gdHAtPm5h bWUgPyB0cC0+bmFtZSA6IHRhcmdldF90aHJlYWRfbmFtZSAodHApOwotCi0g ICAgICBpZiAodWlfb3V0X2lzX21pX2xpa2VfcCAodWlvdXQpKQotCXsKLQkg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAidGFyZ2V0LWlkIiwgdGFy Z2V0X2lkKTsKLQkgIGlmIChleHRyYV9pbmZvKQotCSAgICB1aV9vdXRfZmll bGRfc3RyaW5nICh1aW91dCwgImRldGFpbHMiLCBleHRyYV9pbmZvKTsKLQkg IGlmIChuYW1lKQotCSAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwg Im5hbWUiLCBuYW1lKTsKLQl9Ci0gICAgICBlbHNlCi0JewotCSAgc3RydWN0 IGNsZWFudXAgKnN0cl9jbGVhbnVwOwotCSAgY2hhciAqY29udGVudHM7Ci0K LQkgIGlmIChleHRyYV9pbmZvICYmIG5hbWUpCi0JICAgIGNvbnRlbnRzID0g eHN0cnByaW50ZiAoIiVzIFwiJXNcIiAoJXMpIiwgdGFyZ2V0X2lkLAotCQkJ CSAgIG5hbWUsIGV4dHJhX2luZm8pOwotCSAgZWxzZSBpZiAoZXh0cmFfaW5m bykKLQkgICAgY29udGVudHMgPSB4c3RycHJpbnRmICgiJXMgKCVzKSIsIHRh cmdldF9pZCwgZXh0cmFfaW5mbyk7Ci0JICBlbHNlIGlmIChuYW1lKQotCSAg ICBjb250ZW50cyA9IHhzdHJwcmludGYgKCIlcyBcIiVzXCIiLCB0YXJnZXRf aWQsIG5hbWUpOwotCSAgZWxzZQotCSAgICBjb250ZW50cyA9IHhzdHJkdXAg KHRhcmdldF9pZCk7Ci0JICBzdHJfY2xlYW51cCA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIGNvbnRlbnRzKTsKLQotCSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAo dWlvdXQsICJ0YXJnZXQtaWQiLCBjb250ZW50cyk7Ci0JICBkb19jbGVhbnVw cyAoc3RyX2NsZWFudXApOwotCX0KLQotICAgICAgaWYgKHRwLT5zdGF0ZSA9 PSBUSFJFQURfUlVOTklORykKLQl1aV9vdXRfdGV4dCAodWlvdXQsICIocnVu bmluZylcbiIpOwotICAgICAgZWxzZQotCXsKLQkgIC8qIFRoZSBzd2l0Y2gg YmVsb3cgcHV0cyB1cyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjayAobGVhZgot CSAgICAgZnJhbWUpLiAgKi8KLQkgIHN3aXRjaF90b190aHJlYWQgKHRwLT5w dGlkKTsKLQkgIHByaW50X3N0YWNrX2ZyYW1lIChnZXRfc2VsZWN0ZWRfZnJh bWUgKE5VTEwpLAotCQkJICAgICAvKiBGb3IgTUkgb3V0cHV0LCBwcmludCBm cmFtZSBsZXZlbC4gICovCi0JCQkgICAgIHVpX291dF9pc19taV9saWtlX3Ag KHVpb3V0KSwKLQkJCSAgICAgTE9DQVRJT04pOwotCX0KLQotICAgICAgaWYg KHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKLQl7Ci0JICBjaGFyICpz dGF0ZSA9ICJzdG9wcGVkIjsKLQotCSAgaWYgKHRwLT5zdGF0ZSA9PSBUSFJF QURfUlVOTklORykKLQkgICAgc3RhdGUgPSAicnVubmluZyI7Ci0JICB1aV9v dXRfZmllbGRfc3RyaW5nICh1aW91dCwgInN0YXRlIiwgc3RhdGUpOwotCX0K LQotICAgICAgY29yZSA9IHRhcmdldF9jb3JlX29mX3RocmVhZCAodHAtPnB0 aWQpOwotICAgICAgaWYgKHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSAm JiBjb3JlICE9IC0xKQotCXVpX291dF9maWVsZF9pbnQgKHVpb3V0LCAiY29y ZSIsIGNvcmUpOwotCi0gICAgICBkb19jbGVhbnVwcyAoY2hhaW4yKTsKICAg ICB9CiAKICAgLyogUmVzdG9yZXMgdGhlIGN1cnJlbnQgdGhyZWFkIGFuZCB0 aGUgZnJhbWUgc2VsZWN0ZWQgYmVmb3JlCi0tIAoxLjcuNy4zCgo= --e89a8f3b9e1fb927ff04c7f89f3c--