From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qv1-xf36.google.com (mail-qv1-xf36.google.com [IPv6:2607:f8b0:4864:20::f36]) by sourceware.org (Postfix) with ESMTPS id 807343857372 for ; Fri, 7 Oct 2022 12:27:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 807343857372 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=acm.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-qv1-xf36.google.com with SMTP id z18so2962868qvn.6 for ; Fri, 07 Oct 2022 05:27:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:sender:from:to:cc:subject:date:message-id:reply-to; bh=KDJLnm7T0WdJFsCQGPch5yI0e1iUSJphjYEtTiSFcNg=; b=XxkCqhH3pNqP++tYXO91zRuHJoSwIDEboceXm2E9pKQU4IokZjYH9mFGKbK3sDBWLe Er4qhz7y1pzk6sputWH2dF+obQaQu/F6uTcAYmu0x+E9PiThxvtRoGjXlhMVfZoyu1D3 Ly4f9ANGhIxHk4UyaJthMfFFyRljLqP8t3uIUNoTzSTZwCmouACvGAq0PlNq4eZqFZdy kaV+ijvcmyuyTNqxDoooAZXYOIqxoqKYxjX/8x9TIsZz9+5EeoOtbRGSx5zXAO7QeyWH J1jMiGJjoxQSUJ4gH/4qZj8A3CY78GlNGV40Zsc9KwiWMzhDdDSQGPi79FZmn6RWhKUj le3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:sender:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KDJLnm7T0WdJFsCQGPch5yI0e1iUSJphjYEtTiSFcNg=; b=KdgoRpwIK2N6ryDyuEUhsFHb8G8DJCQW/F7OHDpPTtf/Xfxk5J1Zt/w4HRTaYlaXZL ayZCQyRRMzifdp2HV/yM2DiwOXTTPkIAPs8tu14mMfhygX3IXs4H0mGs6Df3Ln20k7KN febUtAHw/uZAFrax79SyAR3aufgRW17JXBcNk6X35m+aKsePcF/nvQOAt0/deyIICbFE fuGP64usa+twGpHJIvkAkmxl5a9bi3zPbBGrug2kJcy6Al4j/dyORXjQtxl5CYhUadv4 a6nx7FpP5FdtQkh2FLoUK6fJe3qVABy0S1eYZKKlCHVqzkp5Ft3L1bF4/vWhyAM65G5n Ln4g== X-Gm-Message-State: ACrzQf1YiE60CxboQadUCPlX0ywJjuSp9ZcV21aLTLpije+SypdBjOOm 5rI5mifk3C13gQnx8fA4tTwG+vYygG8= X-Google-Smtp-Source: AMsMyM4m1zXu44HO1zVUV/UZCJ4y5+cpfJNkpxdlak5hjeT9+CZ98pwuWiT32HOZcTFPN65mPrSgxw== X-Received: by 2002:a05:6214:27e5:b0:4ac:c227:2111 with SMTP id jt5-20020a05621427e500b004acc2272111mr3881186qvb.127.1665145662596; Fri, 07 Oct 2022 05:27:42 -0700 (PDT) Received: from ?IPV6:2620:10d:c0a3:1407:942e:c420:cf80:2f69? ([2620:10d:c091:500::6:7323]) by smtp.googlemail.com with ESMTPSA id o19-20020a05620a2a1300b006cddf59a600sm1989384qkp.34.2022.10.07.05.27.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Oct 2022 05:27:40 -0700 (PDT) Sender: Nathan Sidwell Content-Type: multipart/mixed; boundary="------------6hdWtOF1eDZbf4Gt4cbM1LEj" Message-ID: <44fbc15f-6f48-94c0-a51a-e5b99190ffbc@acm.org> Date: Fri, 7 Oct 2022 08:27:40 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Content-Language: en-US To: GCC Patches Cc: Jason Merrill , patrick Palka From: Nathan Sidwell Subject: c++: Lambda context mangling X-Spam-Status: No, score=-3038.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------6hdWtOF1eDZbf4Gt4cbM1LEj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit VAR and FIELD decls can become part of a lambda context, when the lambda is 'attached' to that entity (It's a C++20 ODR thing that was discovered with modules, but is actually separate.) We were not marking those decls as substitution candidates, leading to demangling failures and compiler variance. The alternative I chose is to bump the ABI, and add them to the substitution table. I think this is the intent of the ABI. The other alternative would be for the demangler to pop off the most recent substitution when it saw the 'M'. But we'd have to change [at least] the libiberty demangler[*] and the clang demangler and the clang mangler, which seems a bigger challenge. I'll commit this next week, unless y'all have comments. We have other divergence from clang, with templated lambdas. Clang added new manglings [Ty, Tn, Tt] for the lambda's template head (Richard has a pull request, but it's not merged https://github.com/itanium-cxx-abi/cxx-abi/issues/31). Without that, we consider all the template args to be auto when demangling (which is going to look odd for non-type template args). This divergence in signature also affects the lambda numbering, as gcc & clang differ in their opinions about 'same lamda signature'. thoughts on addressing that to in this cycle? I have some demangler fixes coming up. nathan [*] the demangler already seems to have a bug with 'M' handling. -- Nathan Sidwell --------------6hdWtOF1eDZbf4Gt4cbM1LEj Content-Type: text/x-patch; charset=UTF-8; name="0001-c-Lambda-context-mangling.patch" Content-Disposition: attachment; filename="0001-c-Lambda-context-mangling.patch" Content-Transfer-Encoding: base64 RnJvbSA2ZTk0M2VjNjdmYmUxZjJiZDA5MzI1ZWI2YTJkYzY0MDVlZGZjMDBmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gU2lkd2VsbCA8bmF0aGFuQGFjbS5vcmc+ CkRhdGU6IEZyaSwgMzAgU2VwIDIwMjIgMDg6NDM6MTAgLTA3MDAKU3ViamVjdDogW1BBVENI IDEvM10gYysrOiBMYW1iZGEgY29udGV4dCBtYW5nbGluZwoKVkFSIGFuZCBGSUVMRCBkZWNs cyBjYW4gYmVjb21lIHBhcnQgb2YgYSBsYW1iZGEgY29udGV4dCwgd2hlbiB0aGUKbGFtYmRh IGlzICdhdHRhY2hlZCcgdG8gdGhhdCBlbnRpdHkgKEl0J3MgYSBDKysyMCBPRFIgdGhpbmcg dGhhdCB3YXMKZGlzY292ZXJlZCB3aXRoIG1vZHVsZXMsIGJ1dCBpcyBhY3R1YWxseSBzZXBh cmF0ZS4pICBXZSB3ZXJlIG5vdAptYXJraW5nIHRob3NlIGRlY2xzIGFzIHN1YnN0aXR1dGlv biBjYW5kaWRhdGVzLCBsZWFkaW5nIHRvIGRlbWFuZ2xpbmcKZmFpbHVyZXMgYW5kIHZhcmlh bmNlIGZyb20gb3RoZXIgY29tcGlsZXJzLgoKVGhlIGFsdGVybmF0aXZlIEkgY2hvc2UgaXMg dG8gYnVtcCB0aGUgQUJJLCBhbmQgYWRkIHRoZW0gdG8gdGhlCnN1YnN0aXR1dGlvbiB0YWJs ZS4gIEkgdGhpbmsgdGhpcyBpcyB0aGUgaW50ZW50IG9mIHRoZSBBQkkuCgpUaGUgb3RoZSBh bHRlcm5hdGl2ZSB3b3VsZCBiZSBmb3IgdGhlIGRlbWFuZ2xlciB0byBwb3Agb2ZmIHRoZSBt b3N0CnJlY2VudCBzdWJzdGl0aXRpb24gd2hlbiBpdCBzYXcgdGhlICdNJy4gIEJ1dCB3ZSdk IGhhdmUgdG8gY2hhbmdlIFthdApsZWFzdF0gdGhlIGxpYmliZXJ0eSBkZW1hbmdsZXIgYW5k IHRoZSBjbGFuZyBkZW1hbmdsZXIgYW5kIHRoZSBjbGFuZwptYW5nbGVyLCB3aGljaCBzZWVt cyBhIGJpZ2dlciBjaGFsbGVuZ2UuCgoJZ2NjLwoJKiBjb21tb24ub3B0ICgtZmFiaS12ZXJz aW9uPSk6IERvY3VtZW50IDE4LgoJKiBkb2MvaW52b2tlLnRleGkgKC1mYWJpLXZlcnNpb24p OiBEb2N1bWVudCAxOC4KCWdjYy9jLWZhbWlseS8KCSogYy1vcHRzLmNjIChjX2NvbW1vbl9w b3N0X29wdGlvbnMpOiBCdW1wIGFiaSB0byAxOC4KCWdjYy9jcC8KCSogbWFuZ2xlLmNjICh3 cml0ZV9wcmVmaXgpOiBBZGQgVkFSX0RFQ0wgJiBGSUVMRF9ERUNMIHRvCglzdWJzdGl0dXRp b24gdGFibGUgdW5kZXIgYWJpPTE4LiAgTm90ZSBwb3NzaWJsZSBtaXNtYXRjaC4KCWdjYy90 ZXN0c3VpdGUvCgkqIGcrKy5kZy9hYmkvbGFtYmRhLWN0eDEtMTcuQzogTmV3LgoJKiBnKysu ZGcvYWJpL2xhbWJkYS1jdHgxLTE4LkM6IE5ldy4KCSogZysrLmRnL2FiaS9sYW1iZGEtY3R4 MS0xOHZzMTcuQzogTmV3LgoJKiBnKysuZGcvYWJpL2xhbWJkYS1jdHgxLmg6IE5ldy4KCSog ZysrLmRnL2FiaS9sYW1iZGEtdmlzLkM6IEFkanVzdCBleHBlY3RlZCBtYW5nbGVzLgoJKiBn KysuZGcvYWJpL21hY3JvMC5DOiBBZGp1c3QuCi0tLQogZ2NjL2MtZmFtaWx5L2Mtb3B0cy5j YyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGdjYy9jb21tb24ub3B0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrKwogZ2NjL2NwL21hbmdsZS5jYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKystCiBnY2MvZG9jL2lu dm9rZS50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKysKIGdjYy90ZXN0 c3VpdGUvZysrLmRnL2FiaS9sYW1iZGEtY3R4MS0xNy5DICAgICB8IDEwICsrKysrKysrKysK IGdjYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9sYW1iZGEtY3R4MS0xOC5DICAgICB8IDExICsr KysrKysrKysKIGdjYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9sYW1iZGEtY3R4MS0xOHZzMTcu QyB8ICA5ICsrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2xhbWJkYS1jdHgx LmggICAgICAgIHwgMjAgKysrKysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvYWJpL2xhbWJkYS12aXMuQyAgICAgICAgIHwgIDggKysrKystLS0KIGdjYy90ZXN0c3Vp dGUvZysrLmRnL2FiaS9tYWNybzAuQyAgICAgICAgICAgICB8ICAyICstCiAxMCBmaWxlcyBj aGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9sYW1iZGEtY3R4MS0xNy5DCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2xhbWJkYS1jdHgxLTE4 LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkvbGFtYmRh LWN0eDEtMTh2czE3LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5k Zy9hYmkvbGFtYmRhLWN0eDEuaAoKZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLW9wdHMu Y2MgYi9nY2MvYy1mYW1pbHkvYy1vcHRzLmNjCmluZGV4IGJhYmFhMmZjMTU3Li41NWNlYmY2 OGY5YyAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jYworKysgYi9nY2MvYy1m YW1pbHkvYy1vcHRzLmNjCkBAIC05NzUsNyArOTc1LDcgQEAgY19jb21tb25fcG9zdF9vcHRp b25zIChjb25zdCBjaGFyICoqcGZpbGVuYW1lKQogCiAgIC8qIENoYW5nZSBmbGFnX2FiaV92 ZXJzaW9uIHRvIGJlIHRoZSBhY3R1YWwgY3VycmVudCBBQkkgbGV2ZWwsIGZvciB0aGUKICAg ICAgYmVuZWZpdCBvZiBjX2NwcF9idWlsdGlucywgYW5kIHRvIG1ha2UgY29tcGFyaXNvbiBz aW1wbGVyLiAgKi8KLSAgY29uc3QgaW50IGxhdGVzdF9hYmlfdmVyc2lvbiA9IDE3OworICBj b25zdCBpbnQgbGF0ZXN0X2FiaV92ZXJzaW9uID0gMTg7CiAgIC8qIEdlbmVyYXRlIGNvbXBh dGliaWxpdHkgYWxpYXNlcyBmb3IgQUJJIHYxMyAoOC4yKSBieSBkZWZhdWx0LiAgKi8KICAg Y29uc3QgaW50IGFiaV9jb21wYXRfZGVmYXVsdCA9IDEzOwogCmRpZmYgLS1naXQgYS9nY2Mv Y29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0CmluZGV4IDU4ZGMxYTBhNzgwLi5jNjVlZmVl YjhmYyAxMDA2NDQKLS0tIGEvZ2NjL2NvbW1vbi5vcHQKKysrIGIvZ2NjL2NvbW1vbi5vcHQK QEAgLTEwMDQsNiArMTAwNCw5IEBAIERyaXZlciBVbmRvY3VtZW50ZWQKIDsgICAgIG1lbWJl ciBpbml0aWFsaXplcnMgaW4gQysrMTQgYW5kIHVwLgogOyAgICAgRGVmYXVsdCBpbiBHKysg MTIuCiA7Cis7IDE4OiBDb3JyZWN0cyBlcnJvcnMgaW4gbWFuZ2xpbmcgb2YgbGFtYmRhcyB3 aXRoIGFkZGl0aW9uYWwgY29udGV4dC4KKzsgICAgIERlZmF1bHQgaW4gRysrIDEzLgorOwog OyBBZGRpdGlvbmFsIHBvc2l0aXZlIGludGVnZXJzIHdpbGwgYmUgYXNzaWduZWQgYXMgbmV3 IHZlcnNpb25zIG9mCiA7IHRoZSBBQkkgYmVjb21lIHRoZSBkZWZhdWx0IHZlcnNpb24gb2Yg dGhlIEFCSS4KIGZhYmktdmVyc2lvbj0KZGlmZiAtLWdpdCBhL2djYy9jcC9tYW5nbGUuY2Mg Yi9nY2MvY3AvbWFuZ2xlLmNjCmluZGV4IGYwNTFlNzY0NjZhLi4xMjE1NDYzMDg5YiAxMDA2 NDQKLS0tIGEvZ2NjL2NwL21hbmdsZS5jYworKysgYi9nY2MvY3AvbWFuZ2xlLmNjCkBAIC0x MjUyLDcgKzEyNTIsMTQgQEAgd3JpdGVfcHJlZml4IChjb25zdCB0cmVlIG5vZGUpCiAJewog CSAgLyogPGRhdGEtbWVtYmVyLXByZWZpeD4gOj0gPG1lbWJlciBzb3VyY2UtbmFtZT4gTSAq LwogCSAgd3JpdGVfY2hhciAoJ00nKTsKLQkgIHJldHVybjsKKworCSAgLyogQmVmb3JlIEFC SSAxOCwgd2UgZGlkIG5vdCBjb3VudCB0aGVzZSBhcyBzdWJzdGl0dXRpb24KKwkgICAgIGNh bmRpZGF0ZXMuICBUaGlzIGxlYWRzIHRvIGluY29ycmVjdCBkZW1hbmdsaW5ncyAoYW5kCisJ ICAgICBBQkkgZGl2ZXJnZW5jZSB0byBvdGhlciBjb21waWxlcnMpLiAgKi8KKwkgIGlmIChh Ymlfd2Fybl9vcl9jb21wYXRfdmVyc2lvbl9jcm9zc2VzICgxOCkpCisJICAgIEcubmVlZF9h Ymlfd2FybmluZyA9IHRydWU7CisJICBpZiAoIWFiaV92ZXJzaW9uX2F0X2xlYXN0ICgxOCkp CisJICAgIHJldHVybjsKIAl9CiAgICAgfQogCmRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9r ZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQppbmRleCBhNWRjNjM3NzgzNS4uMjY3MWJh N2MxYzEgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrIGIvZ2NjL2RvYy9p bnZva2UudGV4aQpAQCAtMjk0MCw2ICsyOTQwLDkgQEAgVmVyc2lvbiAxNywgd2hpY2ggZmly c3QgYXBwZWFyZWQgaW4gRysrIDEyLCBmaXhlcyBsYXlvdXQgb2YgY2xhc3NlcwogdGhhdCBp bmhlcml0IGZyb20gYWdncmVnYXRlIGNsYXNzZXMgd2l0aCBkZWZhdWx0IG1lbWJlciBpbml0 aWFsaXplcnMKIGluIEMrKzE0IGFuZCB1cC4KIAorVmVyc2lvbiAxOCwgd2hpY2ggZmlyc3Qg YXBwZWFyZCBpbiBHKysgMTMsIGZpeGVzIG1hbmdsaW5ncyBvZiBsYW1iZGFzCit0aGF0IGhh dmUgYWRkaXRpb25hbCBjb250ZXh0LgorCiBTZWUgYWxzbyBAb3B0aW9uey1XYWJpfS4KIAog QGl0ZW0gLWZhYmktY29tcGF0LXZlcnNpb249QHZhcntufQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvYWJpL2xhbWJkYS1jdHgxLTE3LkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9hYmkvbGFtYmRhLWN0eDEtMTcuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNDJmMjc3YTIxMTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9hYmkvbGFtYmRhLWN0eDEtMTcuQwpAQCAtMCwwICsxLDEwIEBACisvLyB7 IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjAgfSB9CisvLyB7IGRnLW9wdGlvbnMgLWZh YmktdmVyc2lvbj0xNyB9CisKKyNpbmNsdWRlICJsYW1iZGEtY3R4MS5oIgorCisvLyBUaGVz ZSBkZW1hbmdsZSBpbmNvcnJlY3RseSwgZHVlIHRvIGEgbWlzc2VkIHN1YnN0aXR1dGlvbiBj YW5kaWRhdGUKKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7X1pOSzFDMWZNVWxU X0VfY2xJTVNfaUVFRGFTMF86fSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciB7X1pOSzJMMk1VbFRfVDBfRV9jbElpZkVFdlNfUzBfOn0gfSB9CisvLyB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIge19aTksxQjJMM01VbFRfVDBfRV9jbElqZEVFdlMwX1MxXzp9 IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtfWjNmb29JTjFxTVVsdkVf RU4xcU1VbHZFMF9FRWlPVF9PVDBfOn0gfSB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2crKy5kZy9hYmkvbGFtYmRhLWN0eDEtMTguQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Fi aS9sYW1iZGEtY3R4MS0xOC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jMWM5ZTI3NGQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2FiaS9sYW1iZGEtY3R4MS0xOC5DCkBAIC0wLDAgKzEsMTEgQEAKKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyMCB9IH0KKy8vIHsgZGctb3B0aW9ucyAtZmFiaS12ZXJz aW9uPTE4IH0KKworI2luY2x1ZGUgImxhbWJkYS1jdHgxLmgiCisKKy8vIFRoZXNlIGNvcnJl Y3RseSBpbmNsdWRlIHRoZSBsYW1iZGEncyBleHRyYSBjb250ZXh0IGFzIGEKKy8vIHN1YnN0 aXR1dGlvbiBjYW5kaWRhdGUsIGFuZCB0aHVzIGRlbWFuZ2xlIGFzIGV4cGVjdGVkCisvLyB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge19aTksxQzFmTVVsVF9FX2NsSU1TX2lFRURh UzFfOn0gfSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge19aTksyTDJNVWxU X1QwX0VfY2xJaWZFRXZTMF9TMV86fSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciB7X1pOSzFCMkwzTVVsVF9UMF9FX2NsSWpkRUV2UzFfUzJfOn0gfSB9CisvLyB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge19aM2Zvb0lOMXFNVWx2RV9FTlMwX1VsdkUwX0VF aU9UX09UMF86fSB9IH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9s YW1iZGEtY3R4MS0xOHZzMTcuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9sYW1iZGEt Y3R4MS0xOHZzMTcuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZjVlYzkwNWRlYzMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9h YmkvbGFtYmRhLWN0eDEtMTh2czE3LkMKQEAgLTAsMCArMSw5IEBACisvLyB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgYysrMjAgfSB9CisvLyB7IGRnLW9wdGlvbnMgey1mYWJpLXZlcnNp b249MTggLVdhYmk9MTd9IH0KKworI2luY2x1ZGUgImxhbWJkYS1jdHgxLmgiCisKKy8vIHsg ZGctcmVnZXhwIHtbXlxuXSpsYW1iZGEtY3R4MS5oOls6MC05XSogd2FybmluZzogdGhlIG1h bmdsZWQgbmFtZSBbXlxuXSogXCgnX1pOSzFCMkwzTVVsVF9UMF9FX2NsSWpkRUV2UzBfUzFf J1wpIGFuZCAnLWZhYmktdmVyc2lvbj0xOCcgXCgnX1pOSzFCMkwzTVVsVF9UMF9FX2NsSWpk RUV2UzFfUzJfJ1wpIFteXG5dKlxufSB9CisvLyB7IGRnLXJlZ2V4cCB7W15cbl0qbGFtYmRh LWN0eDEuaDpbOjAtOV0qIHdhcm5pbmc6IHRoZSBtYW5nbGVkIG5hbWUgW15cbl0qIFwoJ19a TksyTDJNVWxUX1QwX0VfY2xJaWZFRXZTX1MwXydcKSBhbmQgJy1mYWJpLXZlcnNpb249MTgn IFwoJ19aTksyTDJNVWxUX1QwX0VfY2xJaWZFRXZTMF9TMV8nXCkgW15cbl0qXG59IH0KKy8v IHsgZGctcmVnZXhwIHtbXlxuXSpsYW1iZGEtY3R4MS5oOls6MC05XSogd2FybmluZzogdGhl IG1hbmdsZWQgbmFtZSBbXlxuXSogXCgnX1pOSzFDMWZNVWxUX0VfY2xJTVNfaUVFRGFTMF8n XCkgYW5kICctZmFiaS12ZXJzaW9uPTE4JyBcKCdfWk5LMUMxZk1VbFRfRV9jbElNU19pRUVE YVMxXydcKSBbXlxuXSpcbn0gfQorLy8geyBkZy1yZWdleHAge1teXG5dKmxhbWJkYS1jdHgx Lmg6WzowLTldKiB3YXJuaW5nOiB0aGUgbWFuZ2xlZCBuYW1lIFteXG5dKiBcKCdfWjNmb29J TjFxTVVsdkVfRU4xcU1VbHZFMF9FRWlPVF9PVDBfJ1wpIGFuZCAnLWZhYmktdmVyc2lvbj0x OCcgXCgnX1ozZm9vSU4xcU1VbHZFX0VOUzBfVWx2RTBfRUVpT1RfT1QwXydcKSBbXlxuXSpc bn0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2xhbWJkYS1jdHgx LmggYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkvbGFtYmRhLWN0eDEuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWFmYjY2YWFlNzYKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkvbGFtYmRhLWN0eDEuaApAQCAtMCww ICsxLDIwIEBACitpbmxpbmUgYXV0byBMMiA9IFtdIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV PiAoVCwgVSkgLT4gdm9pZCB7fTsKK25hbWVzcGFjZSBCCit7CisgIGlubGluZSBhdXRvIEwz ID0gW10gPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IChULCBVKSAtPiB2b2lkIHt9OworfQor CitzdHJ1Y3QgQworeworICBpbnQgZiA9IFtdIChhdXRvKXsgcmV0dXJuIDE7fSgmQzo6Zik7 CisgIEMgKCk7Cit9OworCitDOjpDICgpCit7CisgIEwyICgxLCAxLjJmKTsKKyAgQjo6TDMg KDF1LCAxLjIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4gaW50 IGZvbyAoQSYmLCBCJiYpIHtyZXR1cm4gMDt9CitpbmxpbmUgaW50IHEgPSBmb28gKFtdKCl7 fSwgW10oKXt9KTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9sYW1i ZGEtdmlzLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkvbGFtYmRhLXZpcy5DCmluZGV4 IGMxMDMzZjUwMWEzLi44MWNmZmNiZTVhNiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvYWJpL2xhbWJkYS12aXMuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkv bGFtYmRhLXZpcy5DCkBAIC0xMyw5ICsxMywxMSBAQCBpbnQgZ3ZhciA9IGdmb28gKGNhcHR1 cmUgKFtde30pKTsKIAogaW5saW5lIGludCBpdmFyID0gaWZvbyAoY2FwdHVyZSAoW117fSkp OwogCi0vLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge18/X1o3Y2FwdHVyZUlOTDRz dmFyTVVsdkVfRUU3V3JhcHBlcklUX0VPUzJfOn0gfSB9Ci0vLyB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIge18/X1o3Y2FwdHVyZUlONGd2YXJNVWx2RV9FRTdXcmFwcGVySVRfRU9T Ml86fSB9IH0KLS8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7Xz9fWjdjYXB0dXJl SU40aXZhck1VbHZFX0VFN1dyYXBwZXJJVF9FT1MyXzp9IH0gfQorLy8gVGhlc2UgbWFuZ2xp bmdzIGNoYW5nZSBiZXR3ZWVuIEFCSXMgMTcgYW5kIDE4ICh0aGUgZmluYWwKKy8vIHN1YnN0 aXR1dGlvbiBudW1iZXIpLgorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtfP19a N2NhcHR1cmVJTkw0c3Zhck1VbHZFX0VFN1dyYXBwZXJJVF9FT1MzXzp9IH0gfQorLy8geyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtfP19aN2NhcHR1cmVJTjRndmFyTVVsdkVfRUU3 V3JhcHBlcklUX0VPUzNfOn0gfSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg e18/X1o3Y2FwdHVyZUlONGl2YXJNVWx2RV9FRTdXcmFwcGVySVRfRU9TM186fSB9IH0KIAog Ly8gQ2FsbHMgdG8gdGhlIGZvb3MgYXJlIGVtaXR0ZWQuCiAvLyB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIge2NhbGxbIFx0XSpfP19aNHNmb29JN1dyYXBwZXJJTkw0c3Zhck1VbHZF X0VFRWlUX30geyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9tYWNybzAuQyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2FiaS9tYWNybzAuQwppbmRleCAyZDA3ZmNkYzYzMS4uNGEwZTlkMDZjYTAg MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9tYWNybzAuQworKysgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9hYmkvbWFjcm8wLkMKQEAgLTEsNiArMSw2IEBACiAvLyBU aGlzIHRlc3RjYXNlIHdpbGwgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBjX2NvbW1v bl9wb3N0X29wdGlvbnMuCiAvLyB7IGRnLW9wdGlvbnMgIi1mYWJpLXZlcnNpb249MCIgfQog Ci0jaWYgX19HWFhfQUJJX1ZFUlNJT04gIT0gMTAxNworI2lmIF9fR1hYX0FCSV9WRVJTSU9O ICE9IDEwMTgKICNlcnJvciAiSW5jb3JyZWN0IHZhbHVlIG9mIF9fR1hYX0FCSV9WRVJTSU9O IgogI2VuZGlmCi0tIAoyLjMwLjIKCg== --------------6hdWtOF1eDZbf4Gt4cbM1LEj--