From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 85367 invoked by alias); 1 Nov 2017 13:17:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 85355 invoked by uid 89); 1 Nov 2017 13:17:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.2 spammy=hash_set, AUX X-HELO: mail-oi0-f54.google.com Received: from mail-oi0-f54.google.com (HELO mail-oi0-f54.google.com) (209.85.218.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 01 Nov 2017 13:17:38 +0000 Received: by mail-oi0-f54.google.com with SMTP id a132so4025755oih.11 for ; Wed, 01 Nov 2017 06:17:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=6eJwV2+ln3z6iHXPL0BKSYoCA6mQzB+OorUEnCt0HEA=; b=bi+2yRjyW1B/G9KE1XOw6Thj110hKJHF5ugcF3YD2T6KZLE9OonSoUTpBqObT+Dv25 Gv3irUJhGpthDTypdLPS7oWBnKYeYv8qxPLfeyXgKdWaonEJEZlrONcTX7Rs9Bg+b+It NuhqVGH3XScD/nmFPkkihdm2eGmqWF68c5NTVwu8gzbSG3AWdcw/MdysgbqF3NOB20bq lLQyQ+3WdTfAqPjVOCjo1CWzVoj/i7/9TZ/JouODkgv8VzIXyzlEUPjdis1So6xqN7eu tB2hBjeyQyxwJFYbPoUHzxfQjW1wdcBHJSiva0WqhY+H0c0ITqw4Z7D9XjCy066RwsLW k7Wg== X-Gm-Message-State: AMCzsaWB4lM1KmnHf/N5jZChpv7T+sEaen/uzx/N0nrkyL/QYdLhleOr CI1NAf/S2Y5pWvdp8bMxu5qkWrl7XtUiU3japo5sHw== X-Google-Smtp-Source: ABhQp+RKgvMnPGGsPXQHJvoOeWBakPYrmg0pWfX9qEtou+U+yZetAHWOVhx9+UCwjQtpp6csEdlAmdB3lw4NhYs06ZY= X-Received: by 10.202.5.68 with SMTP id 65mr2845178oif.276.1509542256726; Wed, 01 Nov 2017 06:17:36 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.18.241 with HTTP; Wed, 1 Nov 2017 06:17:35 -0700 (PDT) From: Aldy Hernandez Date: Wed, 01 Nov 2017 13:17:00 -0000 Message-ID: Subject: PING*2 Fwd: [patch] implement generic debug() for vectors and hash sets To: gcc-patches Content-Type: multipart/mixed; boundary="94eb2c1891c4fc9b1d055cebb1ec" X-IsSubscribed: yes X-SW-Source: 2017-11/txt/msg00013.txt.bz2 --94eb2c1891c4fc9b1d055cebb1ec Content-Type: text/plain; charset="UTF-8" Content-length: 1242 ---------- Forwarded message ---------- From: Aldy Hernandez Date: Mon, Oct 16, 2017 at 9:52 AM Subject: [patch] implement generic debug() for vectors and hash sets To: gcc-patches We have a generic mechanism for dumping types from the debugger with: (gdb) call debug(some_type) However, even though most types are implemented, we have no canonical way of dumping vectors or hash sets. The attached patch fixes this oversight. With it you can call debug(vec<>) and debug(hash_set<>) with the following types: rtx, tree, basic_block, edge, rtx_insn. More can be added simply by adding a debug_slim(your_type) overload and calling: DEFINE_DEBUG_VEC (your_type) DEFINE_DEBUG_HASH_SET (your_type) Here is an example of how things look with this patch: vec of edges: [0] = 10)> vec of bbs: [0] = [1] = vec of trees: [0] = [1] = [2] = vec of rtx: [0] = (reg:SI 87) [1] = (reg:SI 87) hash of bbs: OK for mainline? --94eb2c1891c4fc9b1d055cebb1ec Content-Type: text/x-patch; charset="US-ASCII"; name="curr.patch" Content-Disposition: attachment; filename="curr.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j8u88d5w0 Content-length: 11656 Z2NjLwoKCSogdmVjLmggKGRlYnVnX2hlbHBlcik6IE5ldyBmdW5jdGlvbi4K CShERUZJTkVfREVCVUdfVkVDKTogTmV3IG1hY3JvLgoJKiBoYXNoLXNldC5o IChkZWJ1Z19oZWxwZXIpOiBOZXcgZnVuY3Rpb24uCgkoREVGSU5FX0RFQlVH X0hBU0hfU0VUKTogTmV3IG1hY3JvLgoJKiBjZmcuYyAoZGVidWdfc2xpbSAo ZWRnZSkpOiBOZXcgZnVuY3Rpb24uCglDYWxsIERFRklORV9ERUJVR19WRUMg Zm9yIGVkZ2VzLgoJQ2FsbCBERUZJTkVfREVCVUdfSEFTSF9TRVQgZm9yIGVk Z2VzLgoJKiBjZmdob29rcy5jIChkZWJ1Z19zbGltIChiYXNpY19ibG9jaykp OiBOZXcgZnVuY3Rpb24uCglDYWxsIERFRklORV9ERUJVR19WRUMgZm9yIGJh c2ljIGJsb2Nrcy4KCUNhbGwgREVGSU5FX0RFQlVHX0hBU0hfU0VUIGZvciBi YXNpYyBibG9ja3MuCgkqIHByaW50LXRyZWUuYyAoZGVidWdfc2xpbSk6IE5l dyBmdW5jdGlvbiB0byBoYW5kbGUgdHJlZXMuCglDYWxsIERFRklORV9ERUJV R19WRUMgZm9yIHRyZWVzLgoJQ2FsbCBERUZJTkVfREVCVUdfSEFTSF9TRVQg Zm9yIHRyZWVzLgoJKGRlYnVnICh2ZWM8dHJlZSwgdmFfZ2M+KSAmKTogUmVt b3ZlLgoJKGRlYnVnICg8dmVjPHRyZWUsIHZhX2djPikgKik6IFJlbW92ZS4K CSogcHJpbnQtcnRsLmMgKGRlYnVnX3NsaW0pOiBOZXcgZnVuY3Rpb24gdG8g aGFuZGxlIGNvbnN0X3J0eC4KCUNhbGwgREVGSU5FX0RFQlVHX1ZFQyBmb3Ig cnR4X2RlZi4KCUNhbGwgREVGSU5FX0RFQlVHX1ZFQyBmb3IgcnR4X2luc24u CglDYWxsIERFRklORV9ERUJVR19IQVNIX1NFVCBmb3IgcnR4X2RlZi4KCUNh bGwgREVGSU5FX0RFQlVHX0hBU0hfU0VUIGZvciBydHhfaW5zbi4KCSogc2Vs LXNjaGVkLWR1bXAuYyAoZGVidWcgKHZlYzxydHhfaW5zbiAqPiAmKTogUmVt b3ZlLgoJKGRlYnVnICh2ZWM8cnR4X2luc24gKj4gKnB0cik6IFJlbW92ZS4K CShkZWJ1Z19pbnNuX3ZlY3Rvcik6IFJlbW92ZS4KCSogc3Rvci1sYXlvdXQu YyAoZGVidWdfcmxpKTogQ2FsbCBkZWJ1ZygpIGluc3RlYWQgb2YgZGVidWdf dmVjX3RyZWUuCgpkaWZmIC0tZ2l0IGEvZ2NjL2NmZy5jIGIvZ2NjL2NmZy5j CmluZGV4IDAxZTY4YWVkYTUxLi40ZDAyZmI1NmNiZiAxMDA2NDQKLS0tIGEv Z2NjL2NmZy5jCisrKyBiL2djYy9jZmcuYwpAQCAtNTczLDYgKzU3MywxNiBA QCBkZWJ1ZyAoZWRnZV9kZWYgKnB0cikKICAgZWxzZQogICAgIGZwcmludGYg KHN0ZGVyciwgIjxuaWw+XG4iKTsKIH0KKworc3RhdGljIHZvaWQKK2RlYnVn X3NsaW0gKGVkZ2UgZSkKK3sKKyAgZnByaW50ZiAoc3RkZXJyLCAiPGVkZ2Ug MHglcCAoJWQgLT4gJWQpPiIsICh2b2lkICopIGUsCisJICAgZS0+c3JjLT5p bmRleCwgZS0+ZGVzdC0+aW5kZXgpOworfQorCitERUZJTkVfREVCVUdfVkVD IChlZGdlKQorREVGSU5FX0RFQlVHX0hBU0hfU0VUIChlZGdlKQogDAogLyog U2ltcGxlIHJvdXRpbmVzIHRvIGVhc2lseSBhbGxvY2F0ZSBBVVggZmllbGRz IG9mIGJhc2ljIGJsb2Nrcy4gICovCiAKZGlmZiAtLWdpdCBhL2djYy9jZmdo b29rcy5jIGIvZ2NjL2NmZ2hvb2tzLmMKaW5kZXggMjU4YTVlYWJmOGQuLjcz YjE5NmZlZWM3IDEwMDY0NAotLS0gYS9nY2MvY2ZnaG9va3MuYworKysgYi9n Y2MvY2ZnaG9va3MuYwpAQCAtMzA0LDYgKzMwNCwxNCBAQCBkZWJ1ZyAoYmFz aWNfYmxvY2tfZGVmICpwdHIpCiAgICAgZnByaW50ZiAoc3RkZXJyLCAiPG5p bD5cbiIpOwogfQogCitzdGF0aWMgdm9pZAorZGVidWdfc2xpbSAoYmFzaWNf YmxvY2sgcHRyKQoreworICBmcHJpbnRmIChzdGRlcnIsICI8YmFzaWNfYmxv Y2sgJXAgKCVkKT4iLCAodm9pZCAqKSBwdHIsIHB0ci0+aW5kZXgpOworfQor CitERUZJTkVfREVCVUdfVkVDIChiYXNpY19ibG9ja19kZWYgKikKK0RFRklO RV9ERUJVR19IQVNIX1NFVCAoYmFzaWNfYmxvY2tfZGVmICopCiAKIC8qIER1 bXBzIGJhc2ljIGJsb2NrIEJCIHRvIHByZXR0eS1wcmludGVyIFBQLCBmb3Ig dXNlIGFzIGEgbGFiZWwgb2YKICAgIGEgRE9UIGdyYXBoIHJlY29yZC1ub2Rl LiAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaG9vayBpcwpkaWZmIC0t Z2l0IGEvZ2NjL2hhc2gtc2V0LmggYi9nY2MvaGFzaC1zZXQuaAppbmRleCBk MjI0N2QzOTU3MS4uNThmNzc1MDI0M2EgMTAwNjQ0Ci0tLSBhL2djYy9oYXNo LXNldC5oCisrKyBiL2djYy9oYXNoLXNldC5oCkBAIC0xMjMsNiArMTIzLDQ0 IEBAIHByaXZhdGU6CiAgIGhhc2hfdGFibGU8VHJhaXRzPiBtX3RhYmxlOwog fTsKIAorLyogR2VuZXJpYyBoYXNoX3NldDxUWVBFPiBkZWJ1ZyBoZWxwZXIu CisKKyAgIFRoaXMgbmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGZvciBlYWNo IGhhc2hfc2V0PFRZUEU+IHVzZWQgdGhyb3VnaG91dAorICAgdGhlIGNvbXBp bGVyIGxpa2UgdGhpczoKKworICAgIERFRklORV9ERUJVR19IQVNIX1NFVCAo VFlQRSkKKworICAgVGhlIHJlYXNvbiB3ZSBoYXZlIGEgZGVidWdfaGVscGVy KCkgaXMgYmVjYXVzZSBHREIgY2FuJ3QKKyAgIGRpc2FtYmlndWF0ZSBhIHBs YWluIGNhbGwgdG8gZGVidWcoc29tZV9oYXNoKSwgYW5kIGl0IG11c3QgYmUg Y2FsbGVkCisgICBsaWtlIGRlYnVnPFRZUEU+KHNvbWVfaGFzaCkuICAqLwor dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQKK2RlYnVnX2hlbHBlciAoaGFz aF9zZXQ8VD4gJnJlZikKK3sKKyAgZm9yICh0eXBlbmFtZSBoYXNoX3NldDxU Pjo6aXRlcmF0b3IgaXQgPSByZWYuYmVnaW4gKCk7CisgICAgICAgaXQgIT0g cmVmLmVuZCAoKTsgKytpdCkKKyAgICB7CisgICAgICBkZWJ1Z19zbGltICgq aXQpOworICAgICAgZnB1dGMgKCdcbicsIHN0ZGVycik7CisgICAgfQorfQor CisjZGVmaW5lIERFRklORV9ERUJVR19IQVNIX1NFVChUKSBcCisgIHRlbXBs YXRlIHN0YXRpYyB2b2lkIGRlYnVnX2hlbHBlciAoaGFzaF9zZXQ8VD4gJik7 CVwKKyAgREVCVUdfRlVOQ1RJT04gdm9pZAkJCQkJXAorICBkZWJ1ZyAoaGFz aF9zZXQ8VD4gJnJlZikJCQkJXAorICB7CQkJCQkJCVwKKyAgICBkZWJ1Z19o ZWxwZXIgPFQ+IChyZWYpOwkJCQlcCisgIH0JCQkJCQkJXAorICBERUJVR19G VU5DVElPTiB2b2lkCQkJCQlcCisgIGRlYnVnIChoYXNoX3NldDxUPiAqcHRy KQkJCQlcCisgIHsJCQkJCQkJXAorICAgIGlmIChwdHIpCQkJCQkJXAorICAg ICAgZGVidWcgKCpwdHIpOwkJCQkJXAorICAgIGVsc2UJCQkJCQlcCisgICAg ICBmcHJpbnRmIChzdGRlcnIsICI8bmlsPlxuIik7CQkJXAorICB9CisKIC8q IGdnYyBtYXJraW5nIHJvdXRpbmVzLiAgKi8KIAogdGVtcGxhdGU8dHlwZW5h bWUgSywgdHlwZW5hbWUgSD4KZGlmZiAtLWdpdCBhL2djYy9wcmludC1ydGwu YyBiL2djYy9wcmludC1ydGwuYwppbmRleCAyOGQ5OTg2MmNhZC4uNWZlMjM4 MDFhYjIgMTAwNjQ0Ci0tLSBhL2djYy9wcmludC1ydGwuYworKysgYi9nY2Mv cHJpbnQtcnRsLmMKQEAgLTk2Nyw2ICs5NjcsMjMgQEAgZGVidWcgKGNvbnN0 IHJ0eF9kZWYgKnB0cikKICAgICBmcHJpbnRmIChzdGRlcnIsICI8bmlsPlxu Iik7CiB9CiAKKy8qIExpa2UgZGVidWdfcnR4IGJ1dCB3aXRoIG5vIG5ld2xp bmUsIGFzIGRlYnVnX2hlbHBlciB3aWxsIGFkZCBvbmUuCisKKyAgIE5vdGU6 IE5vIGRlYnVnX3NsaW0ocnR4X2luc24gKikgdmFyaWFudCBpbXBsZW1lbnRl ZCwgYXMgdGhpcworICAgZnVuY3Rpb24gY2FuIHNlcnZlIGZvciBib3RoIHJ0 eCBhbmQgcnR4X2luc24uICAqLworCitzdGF0aWMgdm9pZAorZGVidWdfc2xp bSAoY29uc3RfcnR4IHgpCit7CisgIHJ0eF93cml0ZXIgdyAoc3RkZXJyLCAw LCBmYWxzZSwgZmFsc2UsIE5VTEwpOworICB3LnByaW50X3J0eCAoeCk7Cit9 CisKK0RFRklORV9ERUJVR19WRUMgKHJ0eF9kZWYgKikKK0RFRklORV9ERUJV R19WRUMgKHJ0eF9pbnNuICopCitERUZJTkVfREVCVUdfSEFTSF9TRVQgKHJ0 eF9kZWYgKikKK0RFRklORV9ERUJVR19IQVNIX1NFVCAocnR4X2luc24gKikK KwogLyogQ291bnQgb2YgcnR4J3MgdG8gcHJpbnQgd2l0aCBkZWJ1Z19ydHhf bGlzdC4KICAgIFRoaXMgZ2xvYmFsIGV4aXN0cyBiZWNhdXNlIGdkYiB1c2Vy IGRlZmluZWQgY29tbWFuZHMgaGF2ZSBubyBhcmd1bWVudHMuICAqLwogCmRp ZmYgLS1naXQgYS9nY2MvcHJpbnQtdHJlZS5jIGIvZ2NjL3ByaW50LXRyZWUu YwppbmRleCBkNTM0Yzc2ZWU0OS4uM2EwZjg1ZDQwMzggMTAwNjQ0Ci0tLSBh L2djYy9wcmludC10cmVlLmMKKysrIGIvZ2NjL3ByaW50LXRyZWUuYwpAQCAt MTA5NSwzMiArMTA5NSw2IEBAIGRlYnVnX3JhdyAodmVjPHRyZWUsIHZhX2dj PiAmcmVmKQogfQogCiBERUJVR19GVU5DVElPTiB2b2lkCi1kZWJ1ZyAodmVj PHRyZWUsIHZhX2djPiAmcmVmKQotewotICB0cmVlIGVsdDsKLSAgdW5zaWdu ZWQgaXg7Ci0KLSAgLyogUHJpbnQgdGhlIHNsb3QgdGhpcyBub2RlIGlzIGlu LCBhbmQgaXRzIGNvZGUsIGFuZCBhZGRyZXNzLiAgKi8KLSAgZnByaW50ZiAo c3RkZXJyLCAiPFZFQyIpOwotICBkdW1wX2FkZHIgKHN0ZGVyciwgIiAiLCBy ZWYuYWRkcmVzcyAoKSk7Ci0KLSAgRk9SX0VBQ0hfVkVDX0VMVCAocmVmLCBp eCwgZWx0KQotICAgIHsKLSAgICAgIGZwcmludGYgKHN0ZGVyciwgImVsdDol ZCAiLCBpeCk7Ci0gICAgICBkZWJ1ZyAoZWx0KTsKLSAgICB9Ci19Ci0KLURF QlVHX0ZVTkNUSU9OIHZvaWQKLWRlYnVnICh2ZWM8dHJlZSwgdmFfZ2M+ICpw dHIpCi17Ci0gIGlmIChwdHIpCi0gICAgZGVidWcgKCpwdHIpOwotICBlbHNl Ci0gICAgZnByaW50ZiAoc3RkZXJyLCAiPG5pbD5cbiIpOwotfQotCi1ERUJV R19GVU5DVElPTiB2b2lkCiBkZWJ1Z19yYXcgKHZlYzx0cmVlLCB2YV9nYz4g KnB0cikKIHsKICAgaWYgKHB0cikKQEAgLTExMjksOCArMTEwMywxMSBAQCBk ZWJ1Z19yYXcgKHZlYzx0cmVlLCB2YV9nYz4gKnB0cikKICAgICBmcHJpbnRm IChzdGRlcnIsICI8bmlsPlxuIik7CiB9CiAKLURFQlVHX0ZVTkNUSU9OIHZv aWQKLWRlYnVnX3ZlY190cmVlICh2ZWM8dHJlZSwgdmFfZ2M+ICp2ZWMpCitz dGF0aWMgdm9pZAorZGVidWdfc2xpbSAodHJlZSB0KQogewotICBkZWJ1Z19y YXcgKHZlYyk7CisgIHByaW50X25vZGVfYnJpZWYgKHN0ZGVyciwgIiIsIHQs IDApOwogfQorCitERUZJTkVfREVCVUdfVkVDICh0cmVlKQorREVGSU5FX0RF QlVHX0hBU0hfU0VUICh0cmVlKQpkaWZmIC0tZ2l0IGEvZ2NjL3NlbC1zY2hl ZC1kdW1wLmMgYi9nY2Mvc2VsLXNjaGVkLWR1bXAuYwppbmRleCAzODhhOGFm NTRjNi4uMDI3YjZiMWM3YzYgMTAwNjQ0Ci0tLSBhL2djYy9zZWwtc2NoZWQt ZHVtcC5jCisrKyBiL2djYy9zZWwtc2NoZWQtZHVtcC5jCkBAIC05ODksMzUg Kzk4OSw2IEBAIGRlYnVnX2JsaXN0IChibGlzdF90IGJuZHMpCiAgIHJlc3Rv cmVfZHVtcCAoKTsKIH0KIAotLyogRHVtcCBhIHJ0eCB2ZWN0b3IgUkVGLiAg Ki8KLURFQlVHX0ZVTkNUSU9OIHZvaWQKLWRlYnVnICh2ZWM8cnR4X2luc24g Kj4gJnJlZikKLXsKLSAgc3dpdGNoX2R1bXAgKHN0ZGVycik7Ci0gIGR1bXBf aW5zbl92ZWN0b3IgKHJlZik7Ci0gIHNlbF9wcmludCAoIlxuIik7Ci0gIHJl c3RvcmVfZHVtcCAoKTsKLX0KLQotREVCVUdfRlVOQ1RJT04gdm9pZAotZGVi dWcgKHZlYzxydHhfaW5zbiAqPiAqcHRyKQotewotICBpZiAocHRyKQotICAg IGRlYnVnICgqcHRyKTsKLSAgZWxzZQotICAgIGZwcmludGYgKHN0ZGVyciwg IjxuaWw+XG4iKTsKLX0KLQotLyogRHVtcCBhbiBpbnNuIHZlY3RvciBTVUND Uy4gICovCi1ERUJVR19GVU5DVElPTiB2b2lkCi1kZWJ1Z19pbnNuX3ZlY3Rv ciAocnR4X3ZlY190IHN1Y2NzKQotewotICBzd2l0Y2hfZHVtcCAoc3RkZXJy KTsKLSAgZHVtcF9pbnNuX3ZlY3RvciAoc3VjY3MpOwotICBzZWxfcHJpbnQg KCJcbiIpOwotICByZXN0b3JlX2R1bXAgKCk7Ci19Ci0KIC8qIER1bXAgYSBo YXJkIHJlZyBzZXQgU0VUIHRvIHN0ZGVyci4gICovCiBERUJVR19GVU5DVElP TiB2b2lkCiBkZWJ1Z19oYXJkX3JlZ19zZXQgKEhBUkRfUkVHX1NFVCBzZXQp CmRpZmYgLS1naXQgYS9nY2Mvc3Rvci1sYXlvdXQuYyBiL2djYy9zdG9yLWxh eW91dC5jCmluZGV4IDAyNzM5YjBlZDdmLi45NTc3Y2ZhNDdlZiAxMDA2NDQK LS0tIGEvZ2NjL3N0b3ItbGF5b3V0LmMKKysrIGIvZ2NjL3N0b3ItbGF5b3V0 LmMKQEAgLTk0MSw3ICs5NDEsNyBAQCBkZWJ1Z19ybGkgKHJlY29yZF9sYXlv dXRfaW5mbyBybGkpCiAgIGlmICghdmVjX3NhZmVfaXNfZW1wdHkgKHJsaS0+ cGVuZGluZ19zdGF0aWNzKSkKICAgICB7CiAgICAgICBmcHJpbnRmIChzdGRl cnIsICJwZW5kaW5nIHN0YXRpY3M6XG4iKTsKLSAgICAgIGRlYnVnX3ZlY190 cmVlIChybGktPnBlbmRpbmdfc3RhdGljcyk7CisgICAgICBkZWJ1ZyAocmxp LT5wZW5kaW5nX3N0YXRpY3MpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv Z2NjL3ZlYy5oIGIvZ2NjL3ZlYy5oCmluZGV4IGNiZGQ0Mzk1NzFiLi5iMTQ1 ZWVmMmJjNyAxMDA2NDQKLS0tIGEvZ2NjL3ZlYy5oCisrKyBiL2djYy92ZWMu aApAQCAtNDA3LDYgKzQwNyw4MyBAQCBzdHJ1Y3QgR1RZKCh1c2VyKSkgdmVj CiB7CiB9OwogCisvKiBHZW5lcmljIHZlYzw+IGRlYnVnIGhlbHBlcnMuCisK KyAgIFRoZXNlIG5lZWQgdG8gYmUgaW5zdGFudGlhdGVkIGZvciBlYWNoIHZl YzxUWVBFPiB1c2VkIHRocm91Z2hvdXQKKyAgIHRoZSBjb21waWxlciBsaWtl IHRoaXM6CisKKyAgICBERUZJTkVfREVCVUdfVkVDIChUWVBFKQorCisgICBU aGUgcmVhc29uIHdlIGhhdmUgYSBkZWJ1Z19oZWxwZXIoKSBpcyBiZWNhdXNl IEdEQiBjYW4ndAorICAgZGlzYW1iaWd1YXRlIGEgcGxhaW4gY2FsbCB0byBk ZWJ1Zyhzb21lX3ZlYyksIGFuZCBpdCBtdXN0IGJlIGNhbGxlZAorICAgbGlr ZSBkZWJ1ZzxUWVBFPihzb21lX3ZlYykuICAqLworCit0ZW1wbGF0ZTx0eXBl bmFtZSBUPgordm9pZAorZGVidWdfaGVscGVyICh2ZWM8VD4gJnJlZikKK3sK KyAgdW5zaWduZWQgaTsKKyAgZm9yIChpID0gMDsgaSA8IHJlZi5sZW5ndGgg KCk7ICsraSkKKyAgICB7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICJbJWRd ID0gIiwgaSk7CisgICAgICBkZWJ1Z19zbGltIChyZWZbaV0pOworICAgICAg ZnB1dGMgKCdcbicsIHN0ZGVycik7CisgICAgfQorfQorCisvKiBXZSBuZWVk IGEgc2VwYXJhdGUgdmFfZ2MgdmFyaWFudCBoZXJlIGJlY2F1c2UgZGVmYXVs dCB0ZW1wbGF0ZQorICAgYXJndW1lbnQgZm9yIGZ1bmN0aW9ucyBjYW5ub3Qg YmUgdXNlZCBpbiBjKystOTguICBPbmNlIHRoaXMKKyAgIHJlc3RyaWN0aW9u IGlzIHJlbW92ZWQsIHRob3NlIHZhcmlhbnQgc2hvdWxkIGJlIGZvbGRlZCB3 aXRoIHRoZQorICAgYWJvdmUgZGVidWdfaGVscGVyLiAgKi8KKwordGVtcGxh dGU8dHlwZW5hbWUgVD4KK3ZvaWQKK2RlYnVnX2hlbHBlciAodmVjPFQsIHZh X2djPiAmcmVmKQoreworICB1bnNpZ25lZCBpOworICBmb3IgKGkgPSAwOyBp IDwgcmVmLmxlbmd0aCAoKTsgKytpKQorICAgIHsKKyAgICAgIGZwcmludGYg KHN0ZGVyciwgIlslZF0gPSAiLCBpKTsKKyAgICAgIGRlYnVnX3NsaW0gKHJl ZltpXSk7CisgICAgICBmcHV0YyAoJ1xuJywgc3RkZXJyKTsKKyAgICB9Cit9 CisKKy8qIE1hY3JvIHRvIGRlZmluZSBkZWJ1Zyh2ZWM8VD4pIGFuZCBkZWJ1 Zyh2ZWM8VCwgdmFfZ2M+KSBoZWxwZXIKKyAgIGZ1bmN0aW9ucyBmb3IgYSB0 eXBlIFQuICAqLworCisjZGVmaW5lIERFRklORV9ERUJVR19WRUMoVCkgXAor ICB0ZW1wbGF0ZSBzdGF0aWMgdm9pZCBkZWJ1Z19oZWxwZXIgKHZlYzxUPiAm KTsJCVwKKyAgdGVtcGxhdGUgc3RhdGljIHZvaWQgZGVidWdfaGVscGVyICh2 ZWM8VCwgdmFfZ2M+ICYpOwlcCisgIC8qIERlZmluZSB0aGUgdmVjPFQ+IGRl YnVnIGZ1bmN0aW9ucy4gICovCQlcCisgIERFQlVHX0ZVTkNUSU9OIHZvaWQJ CQkJCVwKKyAgZGVidWcgKHZlYzxUPiAmcmVmKQkJCQkJXAorICB7CQkJCQkJ CVwKKyAgICBkZWJ1Z19oZWxwZXIgPFQ+IChyZWYpOwkJCQlcCisgIH0JCQkJ CQkJXAorICBERUJVR19GVU5DVElPTiB2b2lkCQkJCQlcCisgIGRlYnVnICh2 ZWM8VD4gKnB0cikJCQkJCVwKKyAgewkJCQkJCQlcCisgICAgaWYgKHB0cikJ CQkJCQlcCisgICAgICBkZWJ1ZyAoKnB0cik7CQkJCQlcCisgICAgZWxzZQkJ CQkJCVwKKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIjxuaWw+XG4iKTsJCQlc CisgIH0JCQkJCQkJXAorICAvKiBEZWZpbmUgdGhlIHZlYzxULCB2YV9nYz4g ZGVidWcgZnVuY3Rpb25zLiAgKi8JXAorICBERUJVR19GVU5DVElPTiB2b2lk CQkJCQlcCisgIGRlYnVnICh2ZWM8VCwgdmFfZ2M+ICZyZWYpCQkJCVwKKyAg ewkJCQkJCQlcCisgICAgZGVidWdfaGVscGVyIDxUPiAocmVmKTsJCQkJXAor ICB9CQkJCQkJCVwKKyAgREVCVUdfRlVOQ1RJT04gdm9pZAkJCQkJXAorICBk ZWJ1ZyAodmVjPFQsIHZhX2djPiAqcHRyKQkJCQlcCisgIHsJCQkJCQkJXAor ICAgIGlmIChwdHIpCQkJCQkJXAorICAgICAgZGVidWcgKCpwdHIpOwkJCQkJ XAorICAgIGVsc2UJCQkJCQlcCisgICAgICBmcHJpbnRmIChzdGRlcnIsICI8 bmlsPlxuIik7CQkJXAorICB9CisKIC8qIERlZmF1bHQtY29uc3RydWN0IE4g ZWxlbWVudHMgaW4gRFNULiAgKi8KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ Cg== --94eb2c1891c4fc9b1d055cebb1ec--