From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25377 invoked by alias); 21 Aug 2012 21:19:05 -0000 Received: (qmail 25286 invoked by uid 22791); 21 Aug 2012 21:19:02 -0000 X-SWARE-Spam-Status: No, hits=-5.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-gh0-f169.google.com (HELO mail-gh0-f169.google.com) (209.85.160.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 21 Aug 2012 21:18:43 +0000 Received: by ghrr18 with SMTP id r18so298168ghr.0 for ; Tue, 21 Aug 2012 14:18:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :x-system-of-record:x-gm-message-state; bh=pkUuICjyGgtKVNm+l8FaJ1VOH6KKoZXSIWzTLYpeE2Q=; b=hkj7APsHjzh1lzym0tPb93NlJfKkU4xjuK473iUhVSEHKA8pw0hqjeBnnmZZJqd4Hx qrD6L1XpccLxHM/wzQMDPV+ymfiYOFuS8YEAjOyMKjkG7nYcNO/DtBi5ifHgwybdck4t Ba3B8rgwF80xqX5NwHa3b6f6Okel4rnWTzxNOHTaOi02TzPJase/9mVDFoV3tFhJ4s6C TKCl9KS2F7pDKikHNYbzSFGYQCrCQCrlykyK+1zXCFqW1ISUjznz/8i90LwnoTCULwzx G83DFkdab7G37x9h9jQZrELYVu6aZTAsNekKg0m7ylXbQhdiZrq0T/eXiHQUwqdspxV6 Ea9w== Received: by 10.50.189.227 with SMTP id gl3mr14873639igc.34.1345583922485; Tue, 21 Aug 2012 14:18:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.50.189.227 with SMTP id gl3mr14873633igc.34.1345583922343; Tue, 21 Aug 2012 14:18:42 -0700 (PDT) Received: by 10.50.160.198 with HTTP; Tue, 21 Aug 2012 14:18:42 -0700 (PDT) Date: Tue, 21 Aug 2012 21:19:00 -0000 Message-ID: Subject: [patch] info threads sort by name and name regex matching From: Aaron Gamble To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=14dae9340f73b4ee0a04c7cd2b56 X-System-Of-Record: true X-Gm-Message-State: ALoCoQlVPxBl90QuHkVr6+djgVK/eTc4KVhIR8aL/ApWRwZsWFN7EFnmIHr7fgmpm1zeiH5xR5oZcUAN0s1RMOrs3CHPknl3QJ9cootzEW91lAiOrH08koScZyyyHT9TZAt2W6eBSksEqSDXPxtYYrk6/6PJjxcrOUrBgbHul+rPfk393ud+EzVezzQfo+Eu5zYZNsF/I/dMKxE05tC1Eu6MO1hEUp2f4A== 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/msg00600.txt.bz2 --14dae9340f73b4ee0a04c7cd2b56 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1272 Hello all, Here is a patch for adding sorting by name in 'info threads' and regex pattern matching of thread names for filtering threads. With this patch sorting by name will happen always. (Perhaps a switch to enable sorting would be better?) Regex matching is specified by doing 'info threads r'. This is not ambiguous with previous behavior where parameters to info threads were only numbers. (spaces between 'r' and are ignored) e.g. info threads r ^name_prefix Regards, gdb/ChangeLog: * gdbthread.h: Add char *cached_name to struct thread_info for use when sorting. * thread.c: #include . (thread_list_size): New global. (init_Thread_list): Initialize it. (free_thread): Decrement it. (new_thread): Increment it. (print_thread_filter_check): New function. (print_thread_sort_cmp): New function. (print_thread_info_single): New function. (print_thread_info): Sort threads by name and filter by regex match. testsuite/ * gdb.threads/Makefile.in (EXECUTABLES): Add info-thread-sort-regex. * gdb.threads/info-thread-sort-regex.c: New file. * gdb.threads/info-thread-sort-regex.exp: New file. doc/ * gdb.texinfo (Threads): Add information about sorting and regex parameters. --14dae9340f73b4ee0a04c7cd2b56 Content-Type: application/octet-stream; name="info_threads_sort_and_regex.patch" Content-Disposition: attachment; filename="info_threads_sort_and_regex.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h65hx56h0 Content-length: 30484 RnJvbSBiNjZhNTA0NTIxNzBiZGE3ZjY5NmNlYTI0YTQ1OWJkOGVjYzM3NzY0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBYXJvbiBHYW1ibGUg PGFnYW1ibGVAZ29vZ2xlLmNvbT4KRGF0ZTogVHVlLCAyMSBBdWcgMjAxMiAx MjowMzowNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGluZm8gdGhyZWFkcyBz b3J0IGFuZCByZWdleAoKLS0tCiBnZGIvZG9jL2dkYi50ZXhpbmZvICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKy0KIGdkYi9nZGJ0 aHJlYWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgNCArCiBnZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL01ha2VmaWxlLmlu ICAgICAgICAgICAgICB8ICAgIDIgKy0KIGdkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvaW5mby10aHJlYWQtc29ydC1yZWdleC5jIHwgIDEyMiArKysrKysr CiAuLi4vZ2RiLnRocmVhZHMvaW5mby10aHJlYWQtc29ydC1yZWdleC5leHAg ICAgICAgICB8ICAgNjQgKysrKwogZ2RiL3RocmVhZC5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzc4ICsrKysrKysrKysr KystLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDQzOCBpbnNlcnRpb25zKCsp LCAxNDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9pbmZvLXRocmVhZC1zb3J0LXJlZ2V4LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L2luZm8tdGhyZWFkLXNvcnQtcmVnZXguZXhwCgpkaWZmIC0tZ2l0IGEvZ2Ri L2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KaW5kZXgg MDhiYTkyZC4uNTNhNDVkNyAxMDA2NDQKLS0tIGEvZ2RiL2RvYy9nZGIudGV4 aW5mbworKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCkBAIC0yNzUxLDEwICsy NzUxLDEyIEBAIG51bWJlci0tLWFsd2F5cyBhIHNpbmdsZSBpbnRlZ2VyLS0t d2l0aCBlYWNoIHRocmVhZCBpbiB5b3VyIHByb2dyYW0uCiAKIEB0YWJsZSBA Y29kZQogQGtpbmRleCBpbmZvIHRocmVhZHMKLUBpdGVtIGluZm8gdGhyZWFk cyBAcntbfUB2YXJ7aWR9QGRvdHN7fUBye119Ci1EaXNwbGF5IGEgc3VtbWFy eSBvZiBhbGwgdGhyZWFkcyBjdXJyZW50bHkgaW4geW91ciBwcm9ncmFtLiAg T3B0aW9uYWwgCi1hcmd1bWVudCBAdmFye2lkfUBkb3Rze30gaXMgb25lIG9y IG1vcmUgdGhyZWFkIGlkcyBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBhbmQKLW1l YW5zIHRvIHByaW50IGluZm9ybWF0aW9uIG9ubHkgYWJvdXQgdGhlIHNwZWNp ZmllZCB0aHJlYWQgb3IgdGhyZWFkcy4KK0BpdGVtIGluZm8gdGhyZWFkcyBA cntbfUB2YXJ7aWR9QGRvdHN7fUBie3x9cjxAdmFye3JlZ2V4fT5AcntdfQor RGlzcGxheSBhIHN1bW1hcnkgb2YgYWxsIHRocmVhZHMgY3VycmVudGx5IGlu IHlvdXIgcHJvZ3JhbS4gIE9wdGlvbmFsCithcmd1bWVudCBmb3Igc3BlY2lm eWluZyB0aHJlYWRzIGlzIGVpdGhlciBAY29kZXtyfSBmb2xsb3dlZCBieSBh IHJlZ3VsYXIKK2V4cHJlc3Npb24gb3IgQHZhcntpZH1AZG90c3t9IG9uZSBv ciBtb3JlIG51bWVyaWMgdGhyZWFkIGlkcyBzZXBhcmF0ZWQgYnkKK3NwYWNl cy4gVGhlIGxpc3Qgb2YgdGhyZWFkcyBpcyBzb3J0ZWQgYWxwaGFiZXRpY2Fs bHkgYnkgdGhyZWFkIG5hbWUuCisKIEB2YWx1ZXtHREJOfSBkaXNwbGF5cyBm b3IgZWFjaCB0aHJlYWQgKGluIHRoaXMgb3JkZXIpOgogCiBAZW51bWVyYXRl CmRpZmYgLS1naXQgYS9nZGIvZ2RidGhyZWFkLmggYi9nZGIvZ2RidGhyZWFk LmgKaW5kZXggMDI1MDU1NS4uYzU0ZDFlZSAxMDA2NDQKLS0tIGEvZ2RiL2dk YnRocmVhZC5oCisrKyBiL2dkYi9nZGJ0aHJlYWQuaApAQCAtMTM4LDYgKzEz OCwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KICAgICAgaWYgdGhlIHRocmVh ZCBkb2VzIG5vdCBoYXZlIGEgdXNlci1naXZlbiBuYW1lLiAgKi8KICAgY2hh ciAqbmFtZTsKIAorICAvKiBUaGUgbmFtZSBvZiB0aGUgdGhyZWFkLCBhcyBj YWNoZWQgYnkgcHJpbnRfdGhyZWFkX2luZm8uCisgICAgIFVzZWQgZm9yIHNv cnRpbmcgaW5mbyB0aHJlYWRzIG91dHB1dC4gICovCisgIGNoYXIgKmNhY2hl ZF9uYW1lOworCiAgIC8qIE5vbi16ZXJvIG1lYW5zIHRoZSB0aHJlYWQgaXMg ZXhlY3V0aW5nLiAgTm90ZTogdGhpcyBpcyBkaWZmZXJlbnQKICAgICAgZnJv bSBzYXlpbmcgdGhhdCB0aGVyZSBpcyBhbiBhY3RpdmUgdGFyZ2V0IGFuZCB3 ZSBhcmUgc3RvcHBlZCBhdAogICAgICBhIGJyZWFrcG9pbnQsIGZvciBpbnN0 YW5jZS4gIFRoaXMgaXMgYSByZWFsIGluZGljYXRvciB3aGV0aGVyIHRoZQpk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9NYWtlZmls ZS5pbiBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvTWFrZWZpbGUuaW4K aW5kZXggOGY5Zjg2Ny4uMmQyNGJhNCAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9NYWtlZmlsZS5pbgorKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL01ha2VmaWxlLmluCkBAIC01LDcgKzUsNyBAQCBF WEVDVVRBQkxFUyA9IGF0dGFjaC1pbnRvLXNpZ25hbC1ub3RociBhdHRhY2gt aW50by1zaWduYWwtdGhyIFwKIAlhdHRhY2gtc3RvcHBlZCBhdHRhY2hzdG9w LW10IFwKIAlicF9pbl90aHJlYWQgY3VycmVudC1sd3AtZGVhZCBleGVjbCBl eGVjbDEgZm9yay1jaGlsZC10aHJlYWRzIFwKIAlmb3JrLXRocmVhZC1wZW5k aW5nIGdjb3JlLXB0aHJlYWRzIGhhbmQtY2FsbC1pbi10aHJlYWRzIFwKLQlp YTY0LXNpZ2lsbCBpbnRlcnJ1cHRlZC1oYW5kLWNhbGwga2lsbGVkIGxpbnV4 LWRwIFwKKwlpYTY0LXNpZ2lsbCBpbmZvLXRocmVhZC1zb3J0LXJlZ2V4IGlu dGVycnVwdGVkLWhhbmQtY2FsbCBraWxsZWQgbGludXgtZHAgXAogCWxvY2Fs LXdhdGNoLXdyb25nLXRocmVhZCBtYW55dGhyZWFkcyBtdWx0aS1jcmVhdGUg cGVuZGluZy1zdGVwIFwKIAlwcmludC10aHJlYWRzIHB0aHJlYWRzIHB0aHJl YWRfY29uZF93YWl0IHNjaGVkbG9jayBzaWd0aHJlYWQgXAogCXN0YXRpY3Ro cmVhZHMgc3dpdGNoLXRocmVhZHMgdGhyZWFkLWV4ZWNsIHRocmVhZC1zcGVj aWZpYyBcCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L2luZm8tdGhyZWFkLXNvcnQtcmVnZXguYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvaW5mby10aHJlYWQtc29ydC1yZWdleC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4OTc5Y2UKLS0tIC9kZXYvbnVs bAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2luZm8tdGhyZWFk LXNvcnQtcmVnZXguYwpAQCAtMCwwICsxLDEyMiBAQAorLyogVGVzdCBjYXNl IGZvciBpbmZvIHRocmVhZHMgc29ydCBhbmQgcmVnZXggbWF0Y2hpbmcuCisK KyAgIENvcHlyaWdodCAyMDA4LCAyMDEwLTIwMTIgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUg PHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0 ZGxpYi5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1bmlzdGQu aD4KKworI2lmbmRlZiBOUl9USFJFQURTCisjZGVmaW5lIE5SX1RIUkVBRFMg NAorI2VuZGlmCisKK2ludCB0aHJlYWRfY291bnQ7CisKK3B0aHJlYWRfbXV0 ZXhfdCB0aHJlYWRfY291bnRfbXV0ZXg7CisKK3B0aHJlYWRfY29uZF90IHRo cmVhZF9jb3VudF9jb25kdmFyOworCit2b2lkCitpbmNyX3RocmVhZF9jb3Vu dCAodm9pZCkKK3sKKyAgcHRocmVhZF9tdXRleF9sb2NrICgmdGhyZWFkX2Nv dW50X211dGV4KTsKKyAgKyt0aHJlYWRfY291bnQ7CisgIGlmICh0aHJlYWRf Y291bnQgPT0gTlJfVEhSRUFEUykKKyAgICBwdGhyZWFkX2NvbmRfc2lnbmFs ICgmdGhyZWFkX2NvdW50X2NvbmR2YXIpOworICBwdGhyZWFkX211dGV4X3Vu bG9jayAoJnRocmVhZF9jb3VudF9tdXRleCk7Cit9CisKK3ZvaWQKK2NvbmRf d2FpdCAocHRocmVhZF9jb25kX3QgKmNvbmQsIHB0aHJlYWRfbXV0ZXhfdCAq bXV0KQoreworICBwdGhyZWFkX211dGV4X2xvY2sgKG11dCk7CisgIHB0aHJl YWRfY29uZF93YWl0IChjb25kLCBtdXQpOworICBwdGhyZWFkX211dGV4X3Vu bG9jayAobXV0KTsKK30KKwordm9pZAorbm9yZXR1cm4gKHZvaWQpCit7Cisg IHB0aHJlYWRfbXV0ZXhfdCBtdXQ7CisgIHB0aHJlYWRfY29uZF90IGNvbmQ7 CisKKyAgcHRocmVhZF9tdXRleF9pbml0ICgmbXV0LCBOVUxMKTsKKyAgcHRo cmVhZF9jb25kX2luaXQgKCZjb25kLCBOVUxMKTsKKworICAvKiBXYWl0IGZv ciBhIGNvbmRpdGlvbiB0aGF0IHdpbGwgbmV2ZXIgYmUgc2lnbmFsZWQsIHNv IHdlIGVmZmVjdGl2ZWx5CisgICAgIGJsb2NrIHRoZSB0aHJlYWQgaGVyZS4g ICovCisgIGNvbmRfd2FpdCAoJmNvbmQsICZtdXQpOworfQorCit2b2lkICoK K2ZvcmV2ZXJfcHRocmVhZCAodm9pZCAqdW51c2VkKQoreworICBpbmNyX3Ro cmVhZF9jb3VudCAoKTsKKyAgbm9yZXR1cm4gKCk7Cit9CisKKy8qIFdhaXQg dW50aWwgYWxsIHRocmVhZHMgYXJlIHJ1bm5pbmcuICAqLworCit2b2lkCit3 YWl0X2FsbF90aHJlYWRzX3J1bm5pbmcgKHZvaWQpCit7CisgIHB0aHJlYWRf bXV0ZXhfbG9jayAoJnRocmVhZF9jb3VudF9tdXRleCk7CisgIGlmICh0aHJl YWRfY291bnQgPT0gTlJfVEhSRUFEUykKKyAgICB7CisgICAgICBwdGhyZWFk X211dGV4X3VubG9jayAoJnRocmVhZF9jb3VudF9tdXRleCk7CisgICAgICBy ZXR1cm47CisgICAgfQorICBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZF9j b3VudF9jb25kdmFyLCAmdGhyZWFkX2NvdW50X211dGV4KTsKKyAgaWYgKHRo cmVhZF9jb3VudCA9PSBOUl9USFJFQURTKQorICAgIHsKKyAgICAgIHB0aHJl YWRfbXV0ZXhfdW5sb2NrICgmdGhyZWFkX2NvdW50X211dGV4KTsKKyAgICAg IHJldHVybjsKKyAgICB9CisgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGhy ZWFkX2NvdW50X211dGV4KTsKKyAgcHJpbnRmICgiZmFpbGVkIHdhaXRpbmcg Zm9yIGFsbCB0aHJlYWRzIHRvIHN0YXJ0XG4iKTsKKyAgYWJvcnQgKCk7Cit9 CisKKy8qIENhbGxlZCB3aGVuIGFsbCB0aHJlYWRzIGFyZSBydW5uaW5nLgor ICAgRWFzeSBwbGFjZSBmb3IgYSBicmVha3BvaW50LiAgKi8KKwordm9pZAor YWxsX3RocmVhZHNfcnVubmluZyAodm9pZCkKK3sKK30KKworaW50CittYWlu ICh2b2lkKQoreworICBwdGhyZWFkX3QgZm9yZXZlcltOUl9USFJFQURTXTsK KyAgaW50IGk7CisKKyAgcHRocmVhZF9tdXRleF9pbml0ICgmdGhyZWFkX2Nv dW50X211dGV4LCBOVUxMKTsKKyAgcHRocmVhZF9jb25kX2luaXQgKCZ0aHJl YWRfY291bnRfY29uZHZhciwgTlVMTCk7CisKKyAgZm9yIChpID0gMDsgaSA8 IE5SX1RIUkVBRFM7ICsraSkKKyAgICBwdGhyZWFkX2NyZWF0ZSAoJmZvcmV2 ZXJbaV0sIE5VTEwsIGZvcmV2ZXJfcHRocmVhZCwgTlVMTCk7CisKKyAgd2Fp dF9hbGxfdGhyZWFkc19ydW5uaW5nICgpOworICBhbGxfdGhyZWFkc19ydW5u aW5nICgpOworCisgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL2luZm8tdGhyZWFkLXNvcnQtcmVnZXgu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9pbmZvLXRocmVhZC1z b3J0LXJlZ2V4LmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5iZDllMjFkCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy9pbmZvLXRocmVhZC1zb3J0LXJlZ2V4LmV4cApAQCAt MCwwICsxLDY0IEBACisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0yMDA4 LCAyMDEwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMu CisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgVGVzdCBzb3J0aW5nIGFuZCByZWdl eCBtYXRjaGluZyBpbiBpbmZvIHRocmVhZHMuCisKK3NldCBOUl9USFJFQURT IDQKKworc3RhbmRhcmRfdGVzdGZpbGUKKworIyBTdGFydCB3aXRoIGEgZnJl c2ggZ2RiLgorZ2RiX2V4aXQKK2dkYl9zdGFydAorCitpZiB7W2dkYl9jb21w aWxlX3B0aHJlYWRzICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0i ICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICJhZGRpdGlv bmFsX2ZsYWdzPS1ETlJfVEhSRUFEUz0kTlJfVEhSRUFEUyJdXSAhPSAiIiB9 IHsKKyAgICByZXR1cm4gLTEKK30KKworY2xlYW5fcmVzdGFydCAke2JpbmZp bGV9CisKK2lmIHsgIVtydW50b19tYWluXSB9IHsKKyAgICBmYWlsICJDYW4n dCBydW4gdG8gbWFpbiIKKyAgICByZXR1cm4gMAorfQorCitnZGJfdGVzdCAi YnJlYWsgYWxsX3RocmVhZHNfcnVubmluZyIgXAorICAgICAgICAgIkJyZWFr cG9pbnQgMiBhdCAuKjogZmlsZSAuKiR7c3JjZmlsZX0sIGxpbmUgLioiIFwK KyAgICAgICAgICJicmVha3BvaW50IG9uIGFsbF90aHJlYWRzX3J1bm5pbmci CisKKyMgUnVuIHRoZSBwcm9ncmFtIGFuZCBtYWtlIHN1cmUgR0RCIHJlcG9y dHMgdGhhdCB3ZSBzdG9wcGVkIGFmdGVyCisjIGhpdHRpbmcgYnJlYWtwb2lu dCAyIGluIGFsbF90aHJlYWRzX3J1bm5pbmcoKS4KKworZ2RiX3Rlc3QgImNv bnRpbnVlIiBcCisgICAgICAgICAiLipCcmVha3BvaW50IDIsIGFsbF90aHJl YWRzX3J1bm5pbmcgKCkuKiIgXAorICAgICAgICAgInJ1biB0byBhbGxfdGhy ZWFkc19ydW5uaW5nIgorCisjIFRlc3QgdGhhdCB0aGUgbm8gdGhyZWFkcyBt YXRjaCBtZXNzYWdlIHByaW50cyBjb3JyZWN0bHkuCitnZGJfdGVzdCAiaW5m byB0aHJlYWRzIHIgXCRmb28iIFwKKyAgICAgICAgICJObyB0aHJlYWRzIG1h dGNoICdcXFwkZm9vJ1wuIiBcCisgICAgICAgICAiaW5mbyB0aHJlYWQgbm8g bWF0Y2ggdGVzdCIKKworZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJ0aHJlYWQgbmFt ZSBhIiAic2V0IHRocmVhZCBuYW1lIHRvIGEiCisKK2dkYl90ZXN0ICJpbmZv IHRocmVhZHMiIFwKKyAgICJcXHMrSWRcXHMrVGFyZ2V0XFxzK0lkXFxzK0Zy YW1lIFxyXG5cXCpcXFxzK1xcXGQrXFxccytUaHJlYWRcXFxzKzB4XFtBLUZh LWYwLTlcXSsgXFxcKExXUCBcXFxkK1xcXCkgXCJhXCIuKiIgXAorICAgImNo ZWNrIHRocmVhZCBhIGlzIGZpcnN0IgorCitnZGJfdGVzdCAiaW5mbyB0aHJl YWRzIHIgXmluZm8iIFwKKyAgICJcXHMrSWRcXHMrVGFyZ2V0XFxzK0lkXFxz K0ZyYW1lIFxyXG5cXFxzK1xcXGQrXFxccytUaHJlYWRcXFxzKzB4XFtBLUZh LWYwLTlcXSsgXFxcKExXUCBcXFxkK1xcXCkgXCJpbmZvLipcIi4qIiBcCisg ICAiZmlsdGVyIG91dCB0aHJlYWQgbmFtZWQgYSIKKworcmV0dXJuIDAKZGlm ZiAtLWdpdCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwppbmRleCA3 ZThlZWM1Li42OGQzMDZlIDEwMDY0NAotLS0gYS9nZGIvdGhyZWFkLmMKKysr IGIvZ2RiL3RocmVhZC5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8 Y3R5cGUuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxz aWduYWwuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlICJ1aS1v dXQuaCIKICNpbmNsdWRlICJvYnNlcnZlci5oIgogI2luY2x1ZGUgImFubm90 YXRlLmgiCkBAIC01NSw3ICs1NiwxMCBAQCB2b2lkIF9pbml0aWFsaXplX3Ro cmVhZCAodm9pZCk7CiAvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlv bnMuICAqLwogCiBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZF9saXN0ID0g TlVMTDsKK3N0YXRpYyBpbnQgdGhyZWFkX2xpc3Rfc2l6ZSA9IDA7CiBzdGF0 aWMgaW50IGhpZ2hlc3RfdGhyZWFkX251bTsKK3N0YXRpYyBpbnQgcHJpbnRf dGhyZWFkX2luZm9fcmVnZXhfY2ZsYWdzID0gMDsKK3N0YXRpYyBpbnQgcHJp bnRfdGhyZWFkX2luZm9fcmVnZXhfZWZsYWdzID0gMDsKIAogc3RhdGljIHZv aWQgdGhyZWFkX2NvbW1hbmQgKGNoYXIgKnRpZHN0ciwgaW50IGZyb21fdHR5 KTsKIHN0YXRpYyB2b2lkIHRocmVhZF9hcHBseV9hbGxfY29tbWFuZCAoY2hh ciAqLCBpbnQpOwpAQCAtMTMyLDYgKzEzNiw3IEBAIGZyZWVfdGhyZWFkIChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQogCXhmcmVlICh0cC0+cHJpdmF0ZSk7 CiAgICAgfQogCisgIHRocmVhZF9saXN0X3NpemUtLTsKICAgeGZyZWUgKHRw LT5uYW1lKTsKICAgeGZyZWUgKHRwKTsKIH0KQEAgLTE1Myw2ICsxNTgsNyBA QCBpbml0X3RocmVhZF9saXN0ICh2b2lkKQogICAgIH0KIAogICB0aHJlYWRf bGlzdCA9IE5VTEw7CisgIHRocmVhZF9saXN0X3NpemUgPSAwOwogfQogCiAv KiBBbGxvY2F0ZSBhIG5ldyB0aHJlYWQgd2l0aCB0YXJnZXQgaWQgUFRJRCBh bmQgYWRkIGl0IHRvIHRoZSB0aHJlYWQKQEAgLTE2OSw2ICsxNzUsNyBAQCBu ZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKICAgdHAtPm51bSA9ICsraGlnaGVz dF90aHJlYWRfbnVtOwogICB0cC0+bmV4dCA9IHRocmVhZF9saXN0OwogICB0 aHJlYWRfbGlzdCA9IHRwOworICB0aHJlYWRfbGlzdF9zaXplKys7CiAKICAg LyogTm90aGluZyB0byBmb2xsb3cgeWV0LiAgKi8KICAgdHAtPnBlbmRpbmdf Zm9sbG93LmtpbmQgPSBUQVJHRVRfV0FJVEtJTkRfU1BVUklPVVM7CkBAIC03 NDgsMjUgKzc1NSwyMDggQEAgZmluaXNoX3RocmVhZF9zdGF0ZV9jbGVhbnVw ICh2b2lkICphcmcpCiAgIGZpbmlzaF90aHJlYWRfc3RhdGUgKCpwdGlkX3Ap OwogfQogCisvKiBSZXR1cm5zIHRydWUgaWYgdXNlciByZXF1ZXN0ZWQgdGhl IHRocmVhZC4gICovCisKK3N0YXRpYyBpbnQKK3ByaW50X3RocmVhZF9maWx0 ZXJfY2hlY2sgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAsIGNoYXIgKnJlcXVl c3RlZF90aHJlYWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHBpZCwgcmVnZXhfdCAqcHJlZykKK3sKKyAgaWYgKHByZWcpCisgICAgewor ICAgICAgaW50IGVyciA9IHJlZ2V4ZWMgKHByZWcsIHRwLT5jYWNoZWRfbmFt ZSwgMCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF90 aHJlYWRfaW5mb19yZWdleF9lZmxhZ3MpOworICAgICAgaWYgKGVyciA9PSAw KQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgIGVsc2UKKyAgICAgICAg cmV0dXJuIEZBTFNFOworICAgIH0KKworICAvKiBObyByZWd1bGFyIGV4cHJl c3Npb24gd2FzIHN1cHBsaWVkLCBzZWUgaWYgdGhlcmUncyBhIG1hdGNoIHRo ZSBsaXN0CisgICAgIG9mIHRocmVhZCBpZCdzLiAgKi8KKyAgaWYgKCFudW1i ZXJfaXNfaW5fbGlzdCAocmVxdWVzdGVkX3RocmVhZHMsIHRwLT5udW0pKQor ICAgIHJldHVybiBGQUxTRTsKKworICBpZiAocGlkICE9IC0xICYmIFBJREdF VCAodHAtPnB0aWQpICE9IHBpZCkKKyAgICB7CisgICAgICBpZiAocmVxdWVz dGVkX3RocmVhZHMgIT0gTlVMTCAmJiAqcmVxdWVzdGVkX3RocmVhZHMgIT0g J1wwJykKKyAgICAgICAgZXJyb3IgKF8oIlJlcXVlc3RlZCB0aHJlYWQgbm90 IGZvdW5kIGluIHJlcXVlc3RlZCBwcm9jZXNzIikpOworICAgICAgcmV0dXJu IEZBTFNFOworICAgIH0KKworICBpZiAodHAtPnN0YXRlID09IFRIUkVBRF9F WElURUQpCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOwor fQorCisKKy8qIFVzZWQgdG8gU29ydCB0aHJlYWRzIGluIGxleGljb2dyYXBo aWMgb3JkZXIgYnkgbmFtZS4gICovCisKK3N0YXRpYyBpbnQKK3ByaW50X3Ro cmVhZF9zb3J0X2NtcCAoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAy KQoreworICBjb25zdCBjaGFyICpuYW1lMSA9ICgqKHN0cnVjdCB0aHJlYWRf aW5mbyAqKilwMSktPmNhY2hlZF9uYW1lOworICBjb25zdCBjaGFyICpuYW1l MiA9ICgqKHN0cnVjdCB0aHJlYWRfaW5mbyAqKilwMiktPmNhY2hlZF9uYW1l OworICBpZiAobmFtZTEgJiYgbmFtZTIpCisgICAgcmV0dXJuIHN0cmNvbGwg KG5hbWUxLCBuYW1lMik7CisKKyAgLyogSW5jYXNlIHdlIHJlY2VpdmUgbnVs bCBwb2ludGVycyBpbnN0ZWFkIG9mIHN0cmluZ3MuCisgICAgIE5VTEwgcG9p bnRlcnMgYXJlIHNvcnRlZCBhcyBlbXB0eSBzdHJpbmdzLiAgKi8KKyAgaWYg KCFuYW1lMSAmJiBuYW1lMikKKyAgICByZXR1cm4gLTE7CisgIGlmICghbmFt ZTIgJiYgbmFtZTEpCisgICAgcmV0dXJuIDE7CisKKyAgcmV0dXJuIDA7Cit9 CisKKy8qIFByaW50cyB0aGUgaW5mbyBmb3IgYSBzaW5nbGUgdGhyZWFkLgor ICAgQ2FsbGVkIGJ5IHByaW50X3RocmVhZF9pbmZvIGZvciBlYWNoIHRocmVh ZC4gICovCisKK3N0YXRpYyB2b2lkCitwcmludF90aHJlYWRfaW5mb19zaW5n bGUgKHN0cnVjdCB1aV9vdXQgKnVpb3V0LCBzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0aWRfdCBj dXJyZW50X3B0aWQpCit7CisgIHN0cnVjdCBjbGVhbnVwICp1aW91dF9jbGVh bnVwCisgICAgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2Vu ZCAodWlvdXQsIE5VTEwpOworICBpbnQgY29yZTsKKyAgY2hhciAqZXh0cmFf aW5mbywgKm5hbWUsICp0YXJnZXRfaWQ7CisKKyAgaWYgKHVpX291dF9pc19t aV9saWtlX3AgKHVpb3V0KSkKKyAgICB7CisgICAgICAvKiBDb21wYXRpYmls aXR5LiAgKi8KKyAgICAgIGlmIChwdGlkX2VxdWFsICh0cC0+cHRpZCwgY3Vy cmVudF9wdGlkKSkKKyAgICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiKiAi KTsKKyAgICAgIGVsc2UKKyAgICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAi ICAiKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmIChwdGlk X2VxdWFsICh0cC0+cHRpZCwgY3VycmVudF9wdGlkKSkKKyAgICAgICAgdWlf b3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJjdXJyZW50IiwgIioiKTsKKyAg ICAgIGVsc2UKKyAgICAgICAgdWlfb3V0X2ZpZWxkX3NraXAgKHVpb3V0LCAi Y3VycmVudCIpOworICAgIH0KKworICB1aV9vdXRfZmllbGRfaW50ICh1aW91 dCwgImlkIiwgdHAtPm51bSk7CisKKyAgLyogRm9yIHRoZSBDTEksIHdlIHN0 dWZmIGV2ZXJ5dGhpbmcgaW50byB0aGUgdGFyZ2V0LWlkIGZpZWxkLgorICAg ICBUaGlzIGlzIGEgZ3Jvc3MgaGFjayB0byBtYWtlIHRoZSBvdXRwdXQgY29t ZSBvdXQgbG9va2luZworICAgICBjb3JyZWN0LiAgVGhlIHVuZGVybHlpbmcg cHJvYmxlbSBoZXJlIGlzIHRoYXQgdWktb3V0IGhhcyBubworICAgICB3YXkg dG8gc3BlY2lmeSB0aGF0IGEgZmllbGQncyBzcGFjZSBhbGxvY2F0aW9uIHNo b3VsZCBiZQorICAgICBzaGFyZWQgYnkgc2V2ZXJhbCBmaWVsZHMuICBGb3Ig TUksIHdlIGRvIHRoZSByaWdodCB0aGluZworICAgICBpbnN0ZWFkLiAgKi8K KworICB0YXJnZXRfaWQgPSB0YXJnZXRfcGlkX3RvX3N0ciAodHAtPnB0aWQp OworICBleHRyYV9pbmZvID0gdGFyZ2V0X2V4dHJhX3RocmVhZF9pbmZvICh0 cCk7CisgIGlmICh0cC0+Y2FjaGVkX25hbWUpCisgICAgbmFtZSA9IHRwLT5j YWNoZWRfbmFtZTsKKyAgZWxzZQorICAgIG5hbWUgPSB0cC0+bmFtZSA/IHRw LT5uYW1lIDogdGFyZ2V0X3RocmVhZF9uYW1lICh0cCk7CisKKyAgaWYgKHVp X291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKKyAgICB7CisgICAgICB1aV9v dXRfZmllbGRfc3RyaW5nICh1aW91dCwgInRhcmdldC1pZCIsIHRhcmdldF9p ZCk7CisgICAgICBpZiAoZXh0cmFfaW5mbykKKyAgICAgICAgdWlfb3V0X2Zp ZWxkX3N0cmluZyAodWlvdXQsICJkZXRhaWxzIiwgZXh0cmFfaW5mbyk7Cisg ICAgICBpZiAobmFtZSkKKyAgICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAo dWlvdXQsICJuYW1lIiwgbmFtZSk7CisgICAgfQorICBlbHNlCisgICAgewor ICAgICAgc3RydWN0IGNsZWFudXAgKnN0cl9jbGVhbnVwOworICAgICAgY2hh ciAqY29udGVudHM7CisKKyAgICAgIGlmIChleHRyYV9pbmZvICYmIG5hbWUp CisgICAgICAgIGNvbnRlbnRzID0geHN0cnByaW50ZiAoIiVzIFwiJXNcIiAo JXMpIiwgdGFyZ2V0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hbWUsIGV4dHJhX2luZm8pOworICAgICAgZWxzZSBpZiAoZXh0cmFf aW5mbykKKyAgICAgICAgY29udGVudHMgPSB4c3RycHJpbnRmICgiJXMgKCVz KSIsIHRhcmdldF9pZCwgZXh0cmFfaW5mbyk7CisgICAgICBlbHNlIGlmIChu YW1lKQorICAgICAgICBjb250ZW50cyA9IHhzdHJwcmludGYgKCIlcyBcIiVz XCIiLCB0YXJnZXRfaWQsIG5hbWUpOworICAgICAgZWxzZQorICAgICAgICBj b250ZW50cyA9IHhzdHJkdXAgKHRhcmdldF9pZCk7CisgICAgICBzdHJfY2xl YW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGNvbnRlbnRzKTsKKworICAg ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ0YXJnZXQtaWQiLCBj b250ZW50cyk7CisgICAgICBkb19jbGVhbnVwcyAoc3RyX2NsZWFudXApOwor ICAgIH0KKworICBpZiAodHAtPnN0YXRlID09IFRIUkVBRF9SVU5OSU5HKQor ICAgIHVpX291dF90ZXh0ICh1aW91dCwgIihydW5uaW5nKVxuIik7CisgIGVs c2UKKyAgICB7CisgICAgICAvKiBUaGUgc3dpdGNoIGJlbG93IHB1dHMgdXMg YXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgKGxlYWYKKyAgICAgICAgIGZyYW1l KS4gICovCisgICAgICBzd2l0Y2hfdG9fdGhyZWFkICh0cC0+cHRpZCk7Cisg ICAgICBwcmludF9zdGFja19mcmFtZSAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChO VUxMKSwKKyAgICAgICAgICAvKiBGb3IgTUkgb3V0cHV0LCBwcmludCBmcmFt ZSBsZXZlbC4gICovCisgICAgICAgICAgdWlfb3V0X2lzX21pX2xpa2VfcCAo dWlvdXQpLAorICAgICAgICAgIExPQ0FUSU9OKTsKKyAgICB9CisKKyAgaWYg KHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKKyAgICB7CisgICAgICBj aGFyICpzdGF0ZSA9ICJzdG9wcGVkIjsKKworICAgICAgaWYgKHRwLT5zdGF0 ZSA9PSBUSFJFQURfUlVOTklORykKKyAgICAgICAgc3RhdGUgPSAicnVubmlu ZyI7CisgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInN0YXRl Iiwgc3RhdGUpOworICAgIH0KKworICBjb3JlID0gdGFyZ2V0X2NvcmVfb2Zf dGhyZWFkICh0cC0+cHRpZCk7CisgIGlmICh1aV9vdXRfaXNfbWlfbGlrZV9w ICh1aW91dCkgJiYgY29yZSAhPSAtMSkKKyAgICB1aV9vdXRfZmllbGRfaW50 ICh1aW91dCwgImNvcmUiLCBjb3JlKTsKKworICBkb19jbGVhbnVwcyAodWlv dXRfY2xlYW51cCk7Cit9CisKKy8qIENhY2hlcyB0aGUgbmFtZSB0aGF0IHdp bGwgYmUgc2hvd24gdG8gdGhlIHVzZXIgZm9yIGEgdGhyZWFkLgorICAgV2Ug a2VlcCB0cmFjayBvZiB0aGlzIGZvciBzb3J0aW5nIHB1cnBvc2VzLiAgKi8K Kworc3RhdGljIHZvaWQKK3RocmVhZF9jYWNoZV9uYW1lIChzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRwKQoreworICAgIHRwLT5jYWNoZWRfbmFtZSA9IHRwLT5u YW1lID8gdHAtPm5hbWUgOiB0YXJnZXRfdGhyZWFkX25hbWUgKHRwKTsKK30K KwogLyogUHJpbnRzIHRoZSBsaXN0IG9mIHRocmVhZHMgYW5kIHRoZWlyIGRl dGFpbHMgb24gVUlPVVQuCiAgICBUaGlzIGlzIGEgdmVyc2lvbiBvZiAnaW5m b190aHJlYWRzX2NvbW1hbmQnIHN1aXRhYmxlIGZvcgogICAgdXNlIGZyb20g TUkuCi0gICBJZiBSRVFVRVNURURfVEhSRUFEIGlzIG5vdCAtMSwgaXQncyB0 aGUgR0RCIGlkIG9mIHRoZSB0aHJlYWQKLSAgIHRoYXQgc2hvdWxkIGJlIHBy aW50ZWQuICBPdGhlcndpc2UsIGFsbCB0aHJlYWRzIGFyZQotICAgcHJpbnRl ZC4KLSAgIElmIFBJRCBpcyBub3QgLTEsIG9ubHkgcHJpbnQgdGhyZWFkcyBm cm9tIHRoZSBwcm9jZXNzIFBJRC4KLSAgIE90aGVyd2lzZSwgdGhyZWFkcyBm cm9tIGFsbCBhdHRhY2hlZCBQSURzIGFyZSBwcmludGVkLgotICAgSWYgYm90 aCBSRVFVRVNURURfVEhSRUFEIGFuZCBQSUQgYXJlIG5vdCAtMSwgdGhlbiB0 aGUgdGhyZWFkCi0gICBpcyBwcmludGVkIGlmIGl0IGJlbG9uZ3MgdG8gdGhl IHNwZWNpZmllZCBwcm9jZXNzLiAgT3RoZXJ3aXNlLAotICAgYW4gZXJyb3Ig aXMgcmFpc2VkLiAgKi8KKyAgIFJFUVVFU1RFRF9USFJFQURTIGlzIGVpdGhl ciBhIGxpc3Qgb2YgbnVtZXJpYyB0aHJlYWQgSWQncworICAgb3IgdGhlIGNo YXJhY3RlciAncicgZm9sbG93ZWQgYnkgYSByZWd1bGFyIGV4cHJlc3Npb24g dG8KKyAgIG1hdGNoIHdpdGggZWFjaCB0aHJlYWQncyBuYW1lLiBBbnkgc3Bh Y2VzIGJldHdlZW4gdGhlICdyJyBhbmQKKyAgIHRoZSByZWd1bGFyIGV4cHJl c3Npb24gYXJlIGlnbm9yZWQuCisgICBJZiBuZWl0aGVyIGlzIHN1cHBsaWVk IHRoZW4gYWxsIHRocmVhZHMgYXJlIHByaW50ZWQuCisgICBUaHJlYWRzIGFy ZSBzb3J0ZWQgYnkgbmFtZSB1bmxlc3Mgd2UgYXJlIHNlbmRpbmcgdG8gTUku ICAqLworCiB2b2lkCiBwcmludF90aHJlYWRfaW5mbyAoc3RydWN0IHVpX291 dCAqdWlvdXQsIGNoYXIgKnJlcXVlc3RlZF90aHJlYWRzLCBpbnQgcGlkKQog ewogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwOwogICBwdGlkX3QgY3VycmVu dF9wdGlkOwogICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwotICBjaGFy ICpleHRyYV9pbmZvLCAqbmFtZSwgKnRhcmdldF9pZDsKICAgaW50IGN1cnJl bnRfdGhyZWFkID0gLTE7CisgIHN0cnVjdCB0aHJlYWRfaW5mbyAqKnRocmVh ZHMgPSBOVUxMOworICBpbnQgbl90aHJlYWRzLCBpLCByZXQ7CisgIHJlZ2V4 X3QgcHJlZ19idWZmZXI7CisgIHJlZ2V4X3QgKnByZWcgPSBOVUxMOworCisg IGlmIChyZXF1ZXN0ZWRfdGhyZWFkcyAmJiByZXF1ZXN0ZWRfdGhyZWFkc1sw XSA9PSAncicpCisgICAgeworICAgICAgLyogVXNlciBoYXMgc3VwcGxpZWQg YSByZWd1bGFyIGV4cHJlc3Npb24uICAqLworICAgICAgcmVxdWVzdGVkX3Ro cmVhZHMgPSBza2lwX3NwYWNlcyAoJnJlcXVlc3RlZF90aHJlYWRzWzFdKTsK KyAgICAgIHJldCA9IHJlZ2NvbXAgKCZwcmVnX2J1ZmZlciwgcmVxdWVzdGVk X3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICBwcmludF90aHJlYWRf aW5mb19yZWdleF9jZmxhZ3MpOworICAgICAgaWYgKHJldCA9PSAwKQorICAg ICAgICBwcmVnID0gJnByZWdfYnVmZmVyOworICAgICAgZWxzZQorICAgICAg ICB7CisgICAgICAgICAgY2hhciAqZXJyID0gIGdldF9yZWdjb21wX2Vycm9y IChyZXQsICZwcmVnX2J1ZmZlcik7CisgICAgICAgICAgbWFrZV9jbGVhbnVw ICh4ZnJlZSwgZXJyKTsKKyAgICAgICAgICBlcnJvciAoXygiSW52YWxpZCBy ZWdleHAgKCVzKTogJXMiKSwgZXJyLCByZXF1ZXN0ZWRfdGhyZWFkcyk7Cisg ICAgICAgIH0KKyAgICB9CiAKICAgdXBkYXRlX3RocmVhZF9saXN0ICgpOwog ICBjdXJyZW50X3B0aWQgPSBpbmZlcmlvcl9wdGlkOwpAQCAtNzc2LDM3ICs5 NjYsNTIgQEAgcHJpbnRfdGhyZWFkX2luZm8gKHN0cnVjdCB1aV9vdXQgKnVp b3V0LCBjaGFyICpyZXF1ZXN0ZWRfdGhyZWFkcywgaW50IHBpZCkKIAogICAv KiBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgd2UgbWFrZSBhIGxpc3Qg Zm9yIE1JLiAgQSB0YWJsZSBpcwogICAgICBwcmVmZXJhYmxlIGZvciB0aGUg Q0xJLCB0aG91Z2gsIGJlY2F1c2UgaXQgc2hvd3MgdGFibGUKLSAgICAgaGVh ZGVycy4gICovCisgICAgIGhlYWRlcnMuCisgICAgIFdlIGRvIG5vdCBzb3J0 IHRoZSBsaXN0IGZvciBNSS4gICovCiAgIGlmICh1aV9vdXRfaXNfbWlfbGlr ZV9wICh1aW91dCkpCi0gICAgbWFrZV9jbGVhbnVwX3VpX291dF9saXN0X2Jl Z2luX2VuZCAodWlvdXQsICJ0aHJlYWRzIik7Ci0gIGVsc2UKICAgICB7Ci0g ICAgICBpbnQgbl90aHJlYWRzID0gMDsKKyAgICAgIG1ha2VfY2xlYW51cF91 aV9vdXRfbGlzdF9iZWdpbl9lbmQgKHVpb3V0LCAidGhyZWFkcyIpOwogCiAg ICAgICBmb3IgKHRwID0gdGhyZWFkX2xpc3Q7IHRwOyB0cCA9IHRwLT5uZXh0 KQotCXsKLQkgIGlmICghbnVtYmVyX2lzX2luX2xpc3QgKHJlcXVlc3RlZF90 aHJlYWRzLCB0cC0+bnVtKSkKLQkgICAgY29udGludWU7CisgICAgICAgIHsK KyAgICAgICAgICBpZiAocHRpZF9lcXVhbCAodHAtPnB0aWQsIGN1cnJlbnRf cHRpZCkpCisgICAgICAgICAgICBjdXJyZW50X3RocmVhZCA9IHRwLT5udW07 CiAKLQkgIGlmIChwaWQgIT0gLTEgJiYgUElER0VUICh0cC0+cHRpZCkgIT0g cGlkKQotCSAgICBjb250aW51ZTsKKyAgICAgICAgICBpZiAocHJpbnRfdGhy ZWFkX2ZpbHRlcl9jaGVjayAodHAsIHJlcXVlc3RlZF90aHJlYWRzLCBwaWQs IE5VTEwpKQorICAgICAgICAgICAgcHJpbnRfdGhyZWFkX2luZm9fc2luZ2xl ICh1aW91dCwgdHAsIGN1cnJlbnRfcHRpZCk7CisgICAgICAgIH0KKyAgICB9 CisgIGVsc2UKKyAgICB7CisgICAgICB0aHJlYWRzID0geG1hbGxvYyAoc2l6 ZW9mICgqdGhyZWFkcykgKiB0aHJlYWRfbGlzdF9zaXplKTsKKyAgICAgIG1h a2VfY2xlYW51cCAoZnJlZSwgdGhyZWFkcyk7CiAKLQkgIGlmICh0cC0+c3Rh dGUgPT0gVEhSRUFEX0VYSVRFRCkKLQkgICAgY29udGludWU7CiAKLQkgICsr bl90aHJlYWRzOwotCX0KKyAgICAgIG5fdGhyZWFkcyA9IDA7CisgICAgICBm b3IgKGkgPSAwLCB0cCA9IHRocmVhZF9saXN0OyB0cDsgdHAgPSB0cC0+bmV4 dCwgKytpKQorICAgICAgICB7CisgICAgICAgICAgdGhyZWFkX2NhY2hlX25h bWUgKHRwKTsKKyAgICAgICAgICBpZiAocHJpbnRfdGhyZWFkX2ZpbHRlcl9j aGVjayAodHAsIHJlcXVlc3RlZF90aHJlYWRzLCBwaWQsIHByZWcpKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICB0aHJlYWRzW25fdGhyZWFkc10g PSB0cDsKKyAgICAgICAgICAgICAgKytuX3RocmVhZHM7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICBpZiAocHRpZF9lcXVhbCAodHAtPnB0aWQsIGN1 cnJlbnRfcHRpZCkpCisgICAgICAgICAgICBjdXJyZW50X3RocmVhZCA9IHRw LT5udW07CisKKyAgICAgICAgfQogCiAgICAgICBpZiAobl90aHJlYWRzID09 IDApCi0JewotCSAgaWYgKHJlcXVlc3RlZF90aHJlYWRzID09IE5VTEwgfHwg KnJlcXVlc3RlZF90aHJlYWRzID09ICdcMCcpCi0JICAgIHVpX291dF9tZXNz YWdlICh1aW91dCwgMCwgXygiTm8gdGhyZWFkcy5cbiIpKTsKLQkgIGVsc2UK LQkgICAgdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCBfKCJObyB0aHJlYWRz IG1hdGNoICclcycuXG4iKSwKLQkJCSAgICByZXF1ZXN0ZWRfdGhyZWFkcyk7 Ci0JICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLQkgIHJldHVybjsKLQl9 CisgICAgICAgIHsKKyAgICAgICAgICBpZiAocmVxdWVzdGVkX3RocmVhZHMg PT0gTlVMTCB8fCAqcmVxdWVzdGVkX3RocmVhZHMgPT0gJ1wwJykKKyAgICAg ICAgICAgIHVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgXygiTm8gdGhyZWFk cy5cbiIpKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICB1aV9vdXRf bWVzc2FnZSAodWlvdXQsIDAsIF8oIk5vIHRocmVhZHMgbWF0Y2ggJyVzJy5c biIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlcXVlc3RlZF90aHJlYWRzKTsKKyAgICAgICAgICBkb19jbGVhbnVwcyAo b2xkX2NoYWluKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAog ICAgICAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVp b3V0LCA0LCBuX3RocmVhZHMsICJ0aHJlYWRzIik7CiAKQEAgLTgxNSwxMTUg KzEwMjAsMTQgQEAgcHJpbnRfdGhyZWFkX2luZm8gKHN0cnVjdCB1aV9vdXQg KnVpb3V0LCBjaGFyICpyZXF1ZXN0ZWRfdGhyZWFkcywgaW50IHBpZCkKICAg ICAgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCAxNywgdWlfbGVmdCwg InRhcmdldC1pZCIsICJUYXJnZXQgSWQiKTsKICAgICAgIHVpX291dF90YWJs ZV9oZWFkZXIgKHVpb3V0LCAxLCB1aV9sZWZ0LCAiZnJhbWUiLCAiRnJhbWUi KTsKICAgICAgIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7Ci0gICAgfQot Ci0gIGZvciAodHAgPSB0aHJlYWRfbGlzdDsgdHA7IHRwID0gdHAtPm5leHQp Ci0gICAgewotICAgICAgc3RydWN0IGNsZWFudXAgKmNoYWluMjsKLSAgICAg IGludCBjb3JlOwotCi0gICAgICBpZiAoIW51bWJlcl9pc19pbl9saXN0IChy ZXF1ZXN0ZWRfdGhyZWFkcywgdHAtPm51bSkpCi0JY29udGludWU7Ci0KLSAg ICAgIGlmIChwaWQgIT0gLTEgJiYgUElER0VUICh0cC0+cHRpZCkgIT0gcGlk KQotCXsKLQkgIGlmIChyZXF1ZXN0ZWRfdGhyZWFkcyAhPSBOVUxMICYmICpy ZXF1ZXN0ZWRfdGhyZWFkcyAhPSAnXDAnKQotCSAgICBlcnJvciAoXygiUmVx dWVzdGVkIHRocmVhZCBub3QgZm91bmQgaW4gcmVxdWVzdGVkIHByb2Nlc3Mi KSk7Ci0JICBjb250aW51ZTsKLQl9Ci0KLSAgICAgIGlmIChwdGlkX2VxdWFs ICh0cC0+cHRpZCwgY3VycmVudF9wdGlkKSkKLQljdXJyZW50X3RocmVhZCA9 IHRwLT5udW07Ci0KLSAgICAgIGlmICh0cC0+c3RhdGUgPT0gVEhSRUFEX0VY SVRFRCkKLQljb250aW51ZTsKLQotICAgICAgY2hhaW4yID0gbWFrZV9jbGVh bnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKIAot ICAgICAgaWYgKHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKLQl7Ci0J ICAvKiBDb21wYXRpYmlsaXR5LiAgKi8KLQkgIGlmIChwdGlkX2VxdWFsICh0 cC0+cHRpZCwgY3VycmVudF9wdGlkKSkKLQkgICAgdWlfb3V0X3RleHQgKHVp b3V0LCAiKiAiKTsKLQkgIGVsc2UKLQkgICAgdWlfb3V0X3RleHQgKHVpb3V0 LCAiICAiKTsKLQl9Ci0gICAgICBlbHNlCi0JewotCSAgaWYgKHB0aWRfZXF1 YWwgKHRwLT5wdGlkLCBjdXJyZW50X3B0aWQpKQotCSAgICB1aV9vdXRfZmll bGRfc3RyaW5nICh1aW91dCwgImN1cnJlbnQiLCAiKiIpOwotCSAgZWxzZQot CSAgICB1aV9vdXRfZmllbGRfc2tpcCAodWlvdXQsICJjdXJyZW50Iik7Ci0J fQotCi0gICAgICB1aV9vdXRfZmllbGRfaW50ICh1aW91dCwgImlkIiwgdHAt Pm51bSk7Ci0KLSAgICAgIC8qIEZvciB0aGUgQ0xJLCB3ZSBzdHVmZiBldmVy eXRoaW5nIGludG8gdGhlIHRhcmdldC1pZCBmaWVsZC4KLQkgVGhpcyBpcyBh IGdyb3NzIGhhY2sgdG8gbWFrZSB0aGUgb3V0cHV0IGNvbWUgb3V0IGxvb2tp bmcKLQkgY29ycmVjdC4gIFRoZSB1bmRlcmx5aW5nIHByb2JsZW0gaGVyZSBp cyB0aGF0IHVpLW91dCBoYXMgbm8KLQkgd2F5IHRvIHNwZWNpZnkgdGhhdCBh IGZpZWxkJ3Mgc3BhY2UgYWxsb2NhdGlvbiBzaG91bGQgYmUKLQkgc2hhcmVk IGJ5IHNldmVyYWwgZmllbGRzLiAgRm9yIE1JLCB3ZSBkbyB0aGUgcmlnaHQg dGhpbmcKLQkgaW5zdGVhZC4gICovCi0KLSAgICAgIHRhcmdldF9pZCA9IHRh cmdldF9waWRfdG9fc3RyICh0cC0+cHRpZCk7Ci0gICAgICBleHRyYV9pbmZv ID0gdGFyZ2V0X2V4dHJhX3RocmVhZF9pbmZvICh0cCk7Ci0gICAgICBuYW1l ID0gdHAtPm5hbWUgPyB0cC0+bmFtZSA6IHRhcmdldF90aHJlYWRfbmFtZSAo dHApOwotCi0gICAgICBpZiAodWlfb3V0X2lzX21pX2xpa2VfcCAodWlvdXQp KQotCXsKLQkgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAidGFyZ2V0 LWlkIiwgdGFyZ2V0X2lkKTsKLQkgIGlmIChleHRyYV9pbmZvKQotCSAgICB1 aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImRldGFpbHMiLCBleHRyYV9p bmZvKTsKLQkgIGlmIChuYW1lKQotCSAgICB1aV9vdXRfZmllbGRfc3RyaW5n ICh1aW91dCwgIm5hbWUiLCBuYW1lKTsKLQl9Ci0gICAgICBlbHNlCi0Jewot CSAgc3RydWN0IGNsZWFudXAgKnN0cl9jbGVhbnVwOwotCSAgY2hhciAqY29u dGVudHM7Ci0KLQkgIGlmIChleHRyYV9pbmZvICYmIG5hbWUpCi0JICAgIGNv bnRlbnRzID0geHN0cnByaW50ZiAoIiVzIFwiJXNcIiAoJXMpIiwgdGFyZ2V0 X2lkLAotCQkJCSAgIG5hbWUsIGV4dHJhX2luZm8pOwotCSAgZWxzZSBpZiAo ZXh0cmFfaW5mbykKLQkgICAgY29udGVudHMgPSB4c3RycHJpbnRmICgiJXMg KCVzKSIsIHRhcmdldF9pZCwgZXh0cmFfaW5mbyk7Ci0JICBlbHNlIGlmIChu YW1lKQotCSAgICBjb250ZW50cyA9IHhzdHJwcmludGYgKCIlcyBcIiVzXCIi LCB0YXJnZXRfaWQsIG5hbWUpOwotCSAgZWxzZQotCSAgICBjb250ZW50cyA9 IHhzdHJkdXAgKHRhcmdldF9pZCk7Ci0JICBzdHJfY2xlYW51cCA9IG1ha2Vf Y2xlYW51cCAoeGZyZWUsIGNvbnRlbnRzKTsKLQotCSAgdWlfb3V0X2ZpZWxk X3N0cmluZyAodWlvdXQsICJ0YXJnZXQtaWQiLCBjb250ZW50cyk7Ci0JICBk b19jbGVhbnVwcyAoc3RyX2NsZWFudXApOwotCX0KLQotICAgICAgaWYgKHRw LT5zdGF0ZSA9PSBUSFJFQURfUlVOTklORykKLQl1aV9vdXRfdGV4dCAodWlv dXQsICIocnVubmluZylcbiIpOwotICAgICAgZWxzZQotCXsKLQkgIC8qIFRo ZSBzd2l0Y2ggYmVsb3cgcHV0cyB1cyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFj ayAobGVhZgotCSAgICAgZnJhbWUpLiAgKi8KLQkgIHN3aXRjaF90b190aHJl YWQgKHRwLT5wdGlkKTsKLQkgIHByaW50X3N0YWNrX2ZyYW1lIChnZXRfc2Vs ZWN0ZWRfZnJhbWUgKE5VTEwpLAotCQkJICAgICAvKiBGb3IgTUkgb3V0cHV0 LCBwcmludCBmcmFtZSBsZXZlbC4gICovCi0JCQkgICAgIHVpX291dF9pc19t aV9saWtlX3AgKHVpb3V0KSwKLQkJCSAgICAgTE9DQVRJT04pOwotCX0KLQot ICAgICAgaWYgKHVpX291dF9pc19taV9saWtlX3AgKHVpb3V0KSkKLQl7Ci0J ICBjaGFyICpzdGF0ZSA9ICJzdG9wcGVkIjsKLQotCSAgaWYgKHRwLT5zdGF0 ZSA9PSBUSFJFQURfUlVOTklORykKLQkgICAgc3RhdGUgPSAicnVubmluZyI7 Ci0JICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInN0YXRlIiwgc3Rh dGUpOwotCX0KIAotICAgICAgY29yZSA9IHRhcmdldF9jb3JlX29mX3RocmVh ZCAodHAtPnB0aWQpOwotICAgICAgaWYgKHVpX291dF9pc19taV9saWtlX3Ag KHVpb3V0KSAmJiBjb3JlICE9IC0xKQotCXVpX291dF9maWVsZF9pbnQgKHVp b3V0LCAiY29yZSIsIGNvcmUpOworICAgICAgcXNvcnQgKHRocmVhZHMsIG5f dGhyZWFkcywgc2l6ZW9mICgqdGhyZWFkcyksIHByaW50X3RocmVhZF9zb3J0 X2NtcCk7CiAKLSAgICAgIGRvX2NsZWFudXBzIChjaGFpbjIpOworICAgICAg Zm9yIChpID0gMDsgaSA8IG5fdGhyZWFkczsgaSsrKQorICAgICAgICB7Cisg ICAgICAgICAgcHJpbnRfdGhyZWFkX2luZm9fc2luZ2xlICh1aW91dCwgdGhy ZWFkc1tpXSwgY3VycmVudF9wdGlkKTsKKyAgICAgICAgfQogICAgIH0KIAog ICAvKiBSZXN0b3JlcyB0aGUgY3VycmVudCB0aHJlYWQgYW5kIHRoZSBmcmFt ZSBzZWxlY3RlZCBiZWZvcmUKLS0gCjEuNy43LjMKCg== --14dae9340f73b4ee0a04c7cd2b56--